对于编译的查询,在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实体模型“中,因为edml是"ObjectContext”,lqml是"DataContext“。
提前谢谢你,
发布于 2012-01-11 17:11:53
实体框架中的CompiledQuery ( http://msdn.microsoft.com/en-us/library/bb896297.aspx )仅支持ObjectContext。对于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中实现的。
https://stackoverflow.com/questions/8789280
复制相似问题