クエリをキャッシュすることで、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を使用しています
EF5以降では、クエリは自動的にコンパイルされ、コンパイルする必要はないようです。 ObjectContextはもう使用されておらず、DbContextがあります: コンパイルされたクエリはObjectContextへの暗黙的な参照変換はありません
コンパイル済みクエリに関する別の興味深い投稿: http://blog.codinghorror.com/compiled-or-bust/