2012-03-21 83 views
0

我有這樣的方法實體框架超時錯誤

public static List<SummaryItinerary> ReturnBookingsByUserGuid(Guid userGuid) 
     { 
      var entities = new gHOPEntities(); 
      var results = from itinerary in entities.Itinerary 
          where itinerary.UserGuid == userGuid 
          where itinerary.Booking 
          select new SummaryItinerary() 
            { 
             TourTitle = itinerary.Tours.Title, 
             TourId = itinerary.Tours.TourId, 
             TourSEOName = 
itinerary.Tours.SEOName, 
             DepartureDate = 
itinerary.DepartureDate, 
             Passengers = itinerary.Passengers, 
             Nights = itinerary.Nights, 
             GrandTotal = itinerary.GrandTotal, 
             AmountPaid = itinerary.AmountPaid, 
             CreationDate = 
itinerary.CreationDate 
            }; 
      var summaryItineraryList = new List<SummaryItinerary>(); 

      foreach(var summaryItinerary in results) 
      { 
       summaryItineraryList.Add(summaryItinerary); 
      } 

      return summaryItineraryList.OrderByDescending(i => 
i.CreationDate).ToList(); 
     } 

當我把它稱爲此方法將失敗。超時錯誤被返回。但是,當我在for循環中放置斷點時,它會通過。這是爲什麼發生?

感謝,

薩欽

+0

注意:您可以使用'summaryItineraryList.AddRange(結果)',而不是foreach循環 – Reniuz 2012-03-21 09:54:29

+0

這沒有任何影響。 – 2012-03-21 10:35:14

+0

@Sachin當你在調試你可以得到方法調用ReturnBookingsByUserGuid的結果嗎? – 2012-03-21 10:45:57

回答

0

這是怎麼一回事,因爲在循環:

foreach(var summaryItinerary in results) 

每次它看起來到數據庫元素。這是可枚舉的,所以訪問是通過每個元素,每個元素迭代檢查數據庫。爲了避免做以下操作:

var tmp = results.ToList(); 
foreach(var summaryItinerary in tmp)