繁体   English   中英

如何在实体框架中更新ObjectContext?

[英]How to renew ObjectContext in Entity Framework?

我有一些大型查询(插入和更新),并且由于内存相关的问题,我决定将大量查询减少为较小的1000条记录的插入和更新查询。 我的代码是这样的:

for(/*200 batch of 1000 insert queries*/)
{
    Add1000Records(objectContext);
    objectContext.Dispose();
    objectContext= null;
    objectContext= new MyObjectContext();
}

当插入第一个1000条记录并更新objectContext以插入第二个1000条记录时,我遇到以下错误:

ObjectContext实例已被处置,不能再用于需要连接的操作。

与其在insert方法之外管理上下文生存期,不如在Add1000records方法中管理上下文生存期。 还可以将将要使用的c#“ using”语句转换为try-finally块。 最后,即使抛出异常,也保证可以调用dispose。 另外,也许在函数调用中,您会以某种方式保留对保存的对象的引用,然后再使用它们/重新附加它们

默认情况下,Entity Framework使用延迟加载的导航属性。这是dispose方法的问题当某些代码稍后尝试使用延迟加载的导航属性时,它会失败,因为此时已处理上下文。

for(/*200 batch of 1000 insert queries*/)
{
    Add1000Records(objectContext);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM