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/

Другие вопросы по тегам