多くの関係を持つエンティティの大規模な階層をデータベースから取得する必要があります。多数Includes
の . しかし、私はそれを機能させるのに苦労しています。(ちなみにEF5とPOCOを使用しています)。
簡単な例として、「フィックスアップ」手法を使用して、顧客とそれに関連するすべての注文を取得しようとしています。これは、BLL層で私がやっていることです:-
var customer = context.Customers
.Where(o => o.Id == requestedCustomerId).SingleOrDefault();
customer.Orders = context.Orders
.Where(o => o.CustomerId = requestedCustomerId).ToList();
UI 層に返された顧客エンティティを調べると、customer.Orders は ObjectDisposedException を返します。私は何を間違っていますか?
fixup がどのように使用されるかのさらなる例として、注文に関連する OrderLines をどのように入力しますか (別のクエリで、または上記の 2 番目のクエリの一部として)? また、OrderLine エンティティに ProductCategory 親エンティティがある場合はどうすればよいでしょうか? これらをどのように設定すればよいでしょうか?
アップデート
私はちょうど動作する次のことを試しました: -
var orders = context.Orders
.Where(o => o.CustomerId = requestedCustomerId).ToList();
var customer = context.Customers
.Where(o => o.Id == requestedCustomerId)
.Include("Orders")
.SingleOrDefault();
2 番目のクエリはデータベースから Orders を再度フェッチせず、EF は前のクエリによって取得されたものを関連付けます (任意の変数に座っているだけでも)。