web-dev-qa-db-ja.com

Entity Framework6コンパイル済みLINQクエリ

クエリをキャッシュすることで、Webアプリケーションのパフォーマンスを向上させようとしています。

    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'は、ジェネリック型またはメソッド 'System.Data.Entity.Core.Objects.CompiledQuery.Compile(System.Linq.Expressions.Expression>)'のタイプパラメーター 'TArg0'として使用できません。 'myEntity'から 'System.Data.Entity.Core.Objects.ObjectContext'への暗黙の参照変換はありません。

EF6を使用しています

11
Giox

EF5以降では、クエリは自動的にコンパイルされ、コンパイルする必要はないようです。 ObjectContextはもう使用されておらず、DbContextがあります: コンパイルされたクエリはObjectContextへの暗黙的な参照変換はありません

コンパイル済みクエリに関する別の興味深い投稿: http://blog.codinghorror.com/compiled-or-bust/

19
Giox