1

對於編譯查詢,在LINQ to Object Entity FrameWork中,基本上它允許查詢一次編譯,然後可以在不編譯其他時間的情況下重新使用查詢。在Linq中將查詢編譯爲Devart實體框架

例如:

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到Devart實體框架,無法通過實體。它只允許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的」

在此先感謝,

回答

1

實體框架中的編譯查詢(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。

對於實體框架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中實現。