Как мне предварительно скомпилировать Entity Framework Query-First Query? - PullRequest
18 голосов
/ 21 июня 2011

Я сталкиваюсь с некоторыми проблемами производительности при выполнении запросов Entity Framework Code-First, и я считаю, что прекомпиляция может быть ответом.Если бы я использовал «нормальную» Entity Framework, я бы просто использовал метод CompiledQuery.Compile для предварительной обработки моих запросов.Но так как у меня есть DbContext, а не ObjectContext, я не могу заставить это работать.

Я понимаю, что DbContext - это IObjectContextAdapter , который дает мне доступ к ObjectContext, ноЯ не могу найти метод, который позволяет мне получить IQueryable из контекста моего объекта, который работает в моем предварительно скомпилированном запросе.Я пытался использовать CreateObjectSet , но когда EF попытался выполнить запрос, он пожаловался, что не может преобразовать этот метод в SQL.

Так что же является лучшим способом прекомпиляцииLINQ запрашивает кодовый первый DbContext?

Ответы [ 2 ]

11 голосов
/ 18 июля 2011

Это, вероятно, будет решено в EFv4.2 EF vNext (в настоящее время в самой первой CTP ) с помощью автоматически скомпилированных запросов LINQ .

8 голосов
/ 18 июля 2011

Начиная с официального объявления:

"Нет поддержки скомпилированных запросов от DbContext К сожалению, из-за некоторых технических ограничений в функциональности скомпилированных запросов, которые мы поставили в .NET Framework 4.0, мы не можем поддерживать скомпилированные запросы через API DbContext. Мы понимаем, что это болезненное ограничение, и будем работать над этим в следующем выпуске. «

Ссылка .

...