如何在Entity Framework中更新ObjectContext?

时间:2015-07-25 08:59:39

标签: c# .net sql-server entity-framework

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

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

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

  

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

2 个答案:

答案 0 :(得分:1)

除了在插入方法之外管理上下文生命周期之外,我还可以在Add1000records方法中管理它。还要使用c#“using”语句,它将被翻译成try - finally块。最后,即使抛出异常,也可以保证调用dispose。此外,也许在你的函数调用中,你以某种方式保存引用你保存的对象,然后你使用它们/重新附加它们

答案 1 :(得分:0)

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

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