2

我将大量记录插入到实体框架数据库中,运行后不再需要它们.SaveChanges();。此外,我实际上希望尽快释放内存(以创建新记录)。我没有保留任何链接到旧记录对象的变量,但 GC 似乎没有删除它们,所以,我认为是数据上下文或其他东西使它们保持活力。如何正确处理它们以让 GC 释放它们占用的内存?

4

3 回答 3

2
  1. 这真的不是问题。让 GC 完成它的工作。

  2. 我认为,是数据上下文或其他东西让它们保持活力。

正确的。基本的解决方案是尽可能快地处理上下文。

于 2012-11-22T09:42:10.723 回答
0

您是否尝试过在“使用”语句中创建上下文?

using(var context = new MyContext())
{
    // Do work here .....
}
于 2012-11-22T09:44:04.900 回答
0

SaveChanges()不释放资源,它只是将更改提交到数据库。

要释放资源,您需要调用Dispose()对象上下文的方法。可以通过调用.Dispose()方法或将代码放入using语句中显式完成:

using(var ctx = new EntityModel())
{
    // do the inserts
    ctx.SaveChanges();
}

此外,如果连接是由 Entity Framework 打开的ObjectContext.Dispose(),则方法会关闭连接,否则您可能会用完连接......

这是一个类似的问题:是否应将实体框架上下文放入 Using 语句中?

于 2012-11-22T09:44:12.163 回答