什么是处理LINQ to SQL DataContext的好处?

3
什么是处理LINQ to SQL DataContext的好处?如果不处理这些DataContext对象会有什么问题吗?
例如,为了简化编码,我可能想要做一些像...
var list = from p in (new MyDataContext()).People where p.LastName.Contains("sommar") select p;

在这种情况下,我新建了一个实例,但没有“关闭”它或以任何方式处理它。它是否仍然漂浮在那里,可能会给我带来问题?为了增加赌注,让我们把它放到一个循环中,其中它被调用2000次。你对此有问题吗?

重复问题:在 C# LINQ to SQL 中,DataContext 是否应该使用 IDisposable 进行处理? - Craig Stuntz
1个回答

2
L2S数据上下文不需要被关闭或释放。但是,我不认为我会想要在循环中新建2000次。数据上下文是一个重量级的对象,就像一条重型激素SQL连接一样。我不想创建2000个带来的额外负担。另一方面,你也不希望它们存在太长时间。
新建一个,完成你的操作单元,然后让框架自行处理关闭,或者手动清理。这样做并没有什么坏处。

明白了。当然,那只是一个假设情况。所以,你的意思是,新建2000个数据上下文的唯一问题就是在循环运行时性能不佳,没有内存泄漏或其他问题吗? - Byron Sommardahl
2
DataContext是为一次工作单元而设计和使用的。将其称为“重量级对象”可能会促使人们将其保持活动状态超过一个单元的工作时间,从而导致更多的问题。虽然在紧密循环中创建2000个可能过度,但如果通过另一个DataContext进行同时异步访问,则也可能不适合在单个数据上下文中执行所有迭代 -1。 - Greg D
@Byron - 无法评论Context对象是否存在内存泄漏问题。但是,除非出于技术原因,否则我不会在循环中新建2000个对象。 - Randy Minder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接