2012-03-21 22 views
0

私はそれを呼び出すときに、このメソッドは失敗し、この方法Entity Frameworkのタイムアウトエラー

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

+0

を使用することができます。 –

+0

@Sachinデバッグ中に、メソッド呼び出しReturnBookingsByUserGuidの結果を得ることができますか? –

答えて

0

これは、ループ内でbeacuseある:それはデータベースに見えるすべての要素に

foreach(var summaryItinerary in results) 

。これは列挙可能であるため、アクセスは各要素を介して行われ、すべての要素反復処理でデータベースがチェックされます。それを避けるためには、次の操作を行います

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