2012-03-21 2 views
0

У меня есть этот методEntity Framework Timeout Ошибка

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, он проходит. Почему это происходит?

Спасибо,

SACHIN

+0

Примечание: Вы можете использовать 'summaryItineraryList.AddRange (результат)' вместо Еогеасп цикла – Reniuz

+0

Это не имеет никакого эффекта. –

+0

@Sachin, когда вы находитесь в отладке, вы можете получить результат вызова метода ReturnBookingsByUserGuid? –

ответ

0

Это beacuse в цикле:

foreach(var summaryItinerary in results) 

на каждом элементе она выглядит в базе данных. Это перечислимо, поэтому доступ осуществляется через каждый элемент, и каждая итерация элементов проверяет базу данных. Чтобы избежать этого сделать следующее:

var tmp = results.ToList(); 
foreach(var summaryItinerary in tmp) 
Смежные вопросы