用于Web应用程序的LINQ dbcontext生存期管理

时间:2009-05-13 06:33:46

标签: asp.net linq

我看了Multiple/single instance of Linq to SQL DataContexthttp://www.west-wind.com/weblog/posts/246222.aspx

我正在开发一个Web应用程序。在我的blclass中有很多方法可以对DB进行一些查询,在每个方法中,我声明:

  

Dim db As New DemoDataClassesDataContext

为每个事务创建一个新的DataContext实例。我想知道这是否会成为一个问题的性能或任何其他我不知道的问题。这是正确的方法吗?

我应该使用:

  

Dim db As New DemoDataClassesDataContext 使用db作为新的DemoDataClassesDataContext

据我所知,.NET中的所有对象最终都会被自动垃圾收集器自动处理。

using语句是在语句之​​间的代码运行后处理对象。

在这篇博文http://lee.hdgreetings.com/2008/06/linq-datacontex.html中说“在Datacontext上调用Dispose通常并不重要。

关于如何管理Web应用程序的LINQ datacontext生命周期,我还没有清晰的图片。任何建议都非常感谢。

谢谢。

1 个答案:

答案 0 :(得分:-1)

  

使用声明是处置   一旦代码之间的对象   声明已经运行。

这是不正确的。当代码退出使用范围时,using将最终调用该对象。这将依次调用底层数据库连接上的close。因此,您需要using语句来确保数据库连接已关闭。

修改

只要您按照此处的讨论枚举整个结果集,您实际上不必在datacontract上调用dispose:When should I dispose of a data context