如何更新实体框架中的ObjectContext

本文关键字:框架 ObjectContext 实体 何更新 更新 | 更新日期: 2023-09-27 18:04:41

我有一些大的查询(插入和更新),对于内存相关的问题,我决定将我的繁重查询减少到1000条记录的小批量插入和更新查询。我的代码是这样的:

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

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

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

如何更新实体框架中的ObjectContext

与其在插入方法之外管理上下文生存期,我更愿意在Add1000records方法中管理它。也要使用c#的using语句,它会被转换成一个try - finally块。最后,即使抛出异常,也保证调用dispose。此外,在函数调用中,可能会保留对保存的对象的引用然后使用/重新连接它们

默认情况下,实体框架使用延迟加载的导航属性。当一些代码稍后尝试使用延迟加载的导航属性时,它会失败,因为此时上下文被处置了。

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