1

对于已编译的查询,在 LINQ to Object Entity FrameWork 中,基本上它允许查询一次编译,然后可以重复使用而无需再次编译。

例如:

using System.Data.Objects;
public static Func<entity, string, IQueryable<Entity>>
    TestQuery = CompiledQuery.Compile((entity db, string param) =>
        from e in ctx.Entities where e.Field == param select e);

我的问题是 LINQ to Devart Entity FrameWork,无法通过实体。因为它只允许 datacontext 作为有效参数。

请建议我如何将 linq 转换为用于编译查询的 devart 实体框架(edml)。

注意:它在“Devart LinqConnect 模型(lqml)”中工作正常例如:

 public static Func<MyContext.dataContext , long,
             IQueryable<EMyContext.dataContext.tableName>>
           shopByCountry = CompiledQuery.Compile((MyContext.dataContext db,     long idCountry) =>
             from a in db.Countries where a.idCountry == idCountryselect a);

但不在“Devart Entity Model”中,因为 edml 是“ObjectContext”,lqml 是“DataContext”

提前致谢,

4

1 回答 1

1

仅 ObjectContext 支持实体框架中的CompiledQuery ( http://msdn.microsoft.com/en-us/library/bb896297.aspx )。DbContext (EF v4.1/EF v4.2) 没有这样的支持:http: //blogs.msdn.com/b/adonet/archive/2011/03/02/ef-4-1-is-coming -dbcontext-api-amp-code-first-rtw.aspx。您可能正在使用 DbContext。

对于 Entity Framework 2011 年 6 月 CTP,可以避免显式编译,因为自动编译的 LINQ 查询在 EF 2011 年 6 月 CTP 中实现:http: //blogs.msdn.com/b/efdesign/archive/2011/06 /30/auto-compiled-linq-queries-entity-framework-june-2011-ctp.aspx

于 2012-01-11T09:11:53.270 回答