0

いくつかのナビゲーションプロパティを公開するエンティティ(Contact)にバインドされた要素があります。

いくつかのアクション(つまり、[子の読み込み]ボタン)で、ObjectQuery.Includeを実行する前に実行できるように、連絡先がすべての子と孫に対して読み込まれる必要があります。例(疑似):

DirectCast(element.DataContext, Contact).SubContacts. _
   Include("Address.State"). _
   Load()

モデル自体をクエリするときだけでなく、上記の例のようにアイテムをリロードすることによっても結果を整形できるようにしたいと思います。

これは、何らかの形でEntity-Frameworkの一部である必要があると思います。

4

1 に答える 1

1

私は肯定的ではありませんが、質問に従いますが、確認させてください。

すでにロードしたエンティティを取得してから、そのプロパティのインクルードパスを含むナビゲーションプロパティをロードします。最初のオブジェクトをロードするために使用したのと同じコンテキストを使用している限り、これは実際にはそれほど難しくありません。

重要な点は、エンティティを返すクエリを実行するたびに、EntityFrameworkがエンティティを既に持っている関連オブジェクトのいずれかに自動的にリンクすることです。したがって、本当に必要なのは、一部のインクルードを含む追加のデータを返す新しいクエリを生成することです。

Entity Frameworkのすべての参照には、 CreateSourceQueryというメソッドがあります。オブジェクトクエリを返すので、これを使用してこれを行うことができます(申し訳ありませんが、C#):

AlreadyLoadedContact.SubContacts.CreateSourceQuery().Include("Address.State").ToList();

ToList呼び出しがクエリを実行し、Entity Frameworkがすべての結果を取得して、SubContactsEntityCollectionに自動的に追加します。

于 2009-11-30T04:38:52.687 に答える