Ошибка времени ожидания Entity Framework - PullRequest
0 голосов
/ 21 марта 2012

У меня есть этот метод

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

Спасибо

Сэчины

1 Ответ

0 голосов
/ 21 марта 2012

Это потому, что в цикле:

foreach(var summaryItinerary in results)

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

var tmp = results.ToList();
foreach(var summaryItinerary in tmp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...