Линк к сущностям очень медленно - PullRequest
1 голос
/ 17 июня 2011

У меня есть LINQ To Entities, которые объединяют несколько таблиц. Вот LINQ, который я использую.

var lastestEntry = (from c in etDataContext.Child_HomeVisitor
                                join s in etDataContext.ServiceCoordinators
                                on c.HomeVisitorID equals s.ServiceCoordinatorID
                                join ch in etDataContext.CountyHomeVisitorAgencies
                                on c.CountyHomeVisitorAgencyId equals ch.CountyHomeVisitorAgencyID
                                join a in etDataContext.Agencies
                                on ch.AgencyID equals a.AgencyID
                                join f in etDataContext.ServiceCoordinatorFundingSourceTypes
                                on c.PrimaryFundingSourceID equals f.ServiceCoordinatorFundingSourceTypeId
                                into joinFundingSource
                                from j in joinFundingSource.DefaultIfEmpty()
                                where c.ChildID.Equals(childID)
                                orderby c.EffectiveStartDate descending, c.CreatedDateTime descending
                                select new
                                           {                                                                                         
                                               c.EffectiveStartDate,                                                  
                                               s.FirstName,
                                               s.LastName,
                                               a.Description,
                                               j.FundingSource
                                           }).FirstOrDefault();

В LINQPAD он работает около 20 секунд, однако, если я запустил сгенерированный оператор sql, он будет длиться всего 1 секунду. Я думаю, что большую часть времени тратится на генерацию этого оператора SQL из оператора LINQ, но почему это займет так много времени?

1 Ответ

1 голос
/ 18 июня 2011

EF загружает метаданные во время выполнения первого запроса, и это может занять некоторое время, даже при среднем количестве таблиц.Вы проверили, работает ли он быстрее во второй раз (не в LInqpad, а в коде)?

Изучение EF: http://www.testmaster.ch/EntityFramework.test

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...