我的实体框架模型(使用EF 6.1和ObjectContext)启用延迟加载,并具有各种导航属性。实体框架 - 在分离实体后恢复导航属性
例如:
// Orders is a navigation property (collection), which, when first iterated,
// loads the collection of Order entities from the DB
var orders = Customer.Orders.ToList();
在我的应用程序,性能方面的原因,我希望能够脱离Order
实体,并允许他们被垃圾收集:
MyContext.Detach(order1);
MyContext.Detach(order2);
MyContext.Detach(order3);
但是,我有发现当我只分离子实体的一个子集(即不是全部子实体)时,下一次迭代Customer.Orders
不起作用 - 分离的实体不是返回集合的一部分。
我可以编写什么样的代码来让Customer.Orders
导航属性在这种情况下恢复并正常工作,迫使它重新加载并重新连接所有实体,包括之前分离的实体?
我已经试过手动设置Customer.Orders.IsLoaded
到false
,但是,这并不工作 - 实体没有被重新加载,并某处EF罩IsLoaded
下简单地被重新设置为true
。
我认为.Load()不会工作? – DevilSuichiro
如果由于性能原因您必须分离实体*我有一种感觉,您的问题在于您的体系结构的更深层次。更具体地说:生活时间过长的情况。 –