Entity Framework 6 Compiled LINQ Query

19.3k Views Asked by At

I'm trying to improve performance of a web application by caching a query.

    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);

The error I receive is at compile time:

The type 'myEntity' cannot be used as type parameter 'TArg0' in the generic type or method 'System.Data.Entity.Core.Objects.CompiledQuery.Compile(System.Linq.Expressions.Expression>)'. There is no implicit reference conversion from 'myEntity' to 'System.Data.Entity.Core.Objects.ObjectContext'.

I'm using EF6

1

There are 1 best solutions below

0
Giox On BEST ANSWER

Ok it seems that in EF5 and greater the queries are automatically compiled and there is no need to compile them. The ObjectContext is not used anymore, and we have now DbContext: Compiled Query no implicit reference conversion to ObjectContext

Another interesting post on Compiled Query: http://blog.codinghorror.com/compiled-or-bust/