Entity Framework 6 скомпилированный запрос LINQ
Я пытаюсь улучшить производительность веб-приложения путем кэширования запроса.
public static Func<myEntity, List<HASHDuplicates>, IQueryable<FormResponse>> CompiledDuplicatedResponses =
CompiledQuery.Compile<myEntity, List<HASHDuplicates>, IQueryable<FormResponse>>(
(db, hashes) => from r in db.FormResponse
from h in db.IndexHASHes
from d in hashes
where r.id == h.FormResponseID && h.IndexHASHString == d.hash
select r);
Я получаю ошибку во время компиляции:
Тип "myEntity" нельзя использовать в качестве параметра типа "TArg0" в универсальном типе или методе "System.Data.Entity.Core.Objects.CompiledQuery.Compile(System.Linq.Expressions.Expression>)". Не существует неявного преобразования ссылок из "myEntity" в "System.Data.Entity.Core.Objects.ObjectContext".
Я использую EF6
1 ответ
Хорошо, кажется, что в EF5 и выше запросы автоматически компилируются и нет необходимости их компилировать. ObjectContext больше не используется, и теперь у нас есть DbContext: скомпилированный запрос без неявного преобразования ссылок в ObjectContext
Еще один интересный пост по скомпилированному запросу: http://blog.codinghorror.com/compiled-or-bust/