私はWCF Dataservice/EF 4.1とWPFクライアントアプリケーションを使用しています。 ここで私の問題は簡単な形式です。私はクライアントに問い合わせると言う:既に追跡されたエンティティで追加データを '展開'できますか?
var query = (from o in ServiceRef.Clients.Expand("Addresses,PhoneNumbers,EmailAddresses")
where o.FirstName.ToLower().Contains(sf) ||
o.LastName.ToLower().Contains(sf) || ...
orderby o.LastName
select o).Take(100);
これは私がクライアントを識別するために必要なすべてです。しかし、私は最初のクエリで "展開"されていないコメント、購入履歴、またはその他の関連するエンティティを見たいと思っている。同じServiceRefコンテキストを使用して再度クエリを実行すると、「コメント」が展開されることはありません。
「クライアント」エンティティが既に追跡されているため、サービスに対して新しいクエリを実行していないことがコンテキストと関係していると推測しています。
ここでいくつかの投稿によると、私は完全に同意しないDBContextをその周りに置いてはいけません。シンプルなマスター/詳細シナリオです。追加のデータを取得するために、「詳細クエリ」ごとに新しいコンテキストを作成することは、何らかの形で間違っているようです。追加のデータを取得するためにEFにエンティティを「リロード」させる方法はありますか?
初期クエリで必要なすべての添付エンティティを展開できます。しかし、私は検索結果ごとに大量のデータを圧縮します。その95%が決して使用されることはありません。
明確になります。私が求めているのは、「ベストプラクティス」の問題です。途中に道がありますか?すべてのデータを常に展開する(...)の間<>常に新しいコンテキストを作成する。必要に応じて追加データを読み込む方法はありますか?
Thanx、Andreas
LoadProperty()で私を指摘してくれたLadislavに感謝します。私は今までそれが何だったのか分からなかった。コンテクスト・ライブ・スパンの部分では、作業単位の「範囲」のサイジングをかなり頻繁に行っています。ほとんどの場合、save()を実装しています。 Thanx – Andreas
EFを追跡するすべてのことで、このような動作を組み込むのはうれしくない/可能ではないだろうか...既に追跡されているが、すべてのプロパティではない - >不足しているプロパティを読み込む – Andreas