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

しかし、edml は "ObjectContext" であり、lqml は "DataContext" であるため、"Devart Entity Model" ではありません。

前もって感謝します、

4

1 に答える 1

1

Entity Framework の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 June 2011 CTP の場合、自動コンパイルされた LINQ クエリが EF June 2011 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 に答える