我有一些大的查询(插入和更新)和内存相关的问题我决定减少我的繁重查询到较小批量的1000条记录插入和更新查询。我的代码是这样的:
for(/*200 batch of 1000 insert queries*/)
{
Add1000Records(objectContext);
objectContext.Dispose();
objectContext= null;
objectContext= new MyObjectContext();
}
当插入第一个1000记录并更新objectContext以插入第二个1000记录时,我面临以下错误:
ObjectContext实例已被释放,不能再用于需要连接的操作。
答案 0 :(得分:1)
除了在插入方法之外管理上下文生命周期之外,我还可以在Add1000records方法中管理它。还要使用c#“using”语句,它将被翻译成try - finally块。最后,即使抛出异常,也可以保证调用dispose。此外,也许在你的函数调用中,你以某种方式保存引用你保存的对象,然后你使用它们/重新附加它们
答案 1 :(得分:0)
默认情况下,Entity Framework对导航属性使用延迟加载。dispose方法存在问题当某些代码稍后尝试使用延迟加载的导航属性时,它会失败,因为上下文处于此刻。
for(/*200 batch of 1000 insert queries*/)
{
Add1000Records(objectContext);
}