1

ObjectContext を使用して古い Entity Framework から DbContext にプロジェクトを移行しようとしています。私の問題は、ObjectSet<Garden> & EntityCollection<Flowers>DbSet<Garden> & ICollection<Flowers>のコードがテーブルとエンティティのナビゲーション/関連テーブルに対して動的クエリを実行する必要があることです。

var flowers = Gardens.Where("it.Name = @name").First().Flowers.Where(blah);

LINQ は代替手段ではありません。動的に構築される文字列 (グリッドによる eSQL 構築、ユーザーによる入力など、Where、GroupBy、OrderBy に使用) に基づいている必要があります。ObjectQuery<>文字列/eSQL述語しかないようです。

関連/外部キーテーブルでも機能する最善の方法は? ここで何かが欠けていますか?以前は非常に単純だったものが難しいように思えるからですか?

4

1 に答える 1

2

メイン コンテキスト (テーブルのクエリ) とすべてのエンティティ (ナビゲーション/外部キー) に追加する T4 ファイルを作成することで、これを解決しました。簡略化されたバージョンは次のとおりです。

// Get table as ObjectQuery
var myGarden = ((IObjectContextAdapter)this).ObjectContext.CreateObjectSet<Garden>("Gardens").First();
// myGarden is ObjectQuery with eSQL support
var foo = myGarden.Where("it.Works = true");
// Get the Flowers (navigation) from the Garden entity as ObjectQuery
var flowers = (ObjectQuery<Flower>)Entry(myGarden).Collection<Flower>("Flowers").Query();
// flowers is ObjectQuery with eSQL support
flowers.Where("it.AlsoWorks = true");
于 2013-08-14T18:35:17.790 に答える