【问题标题】:LINQ datacontext lifetime managment for web applicationWeb 应用程序的 LINQ dbcontext 生命周期管理
【发布时间】:2009-05-13 06:33:46
【问题描述】:

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

我正在开发一个网络应用程序。在我的 blclass 中有许多方法可以对数据库进行一些查询,在每一个方法中,我声明:

Dim db 作为新的 DemoDataClassesDataContext

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

我应该使用:

Dim db As New DemoDataClassesDataContextUsing db As New DemoDataClassesDataContext

我了解 .NET 中的所有对象最终都会由自动垃圾收集器自动处理。

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

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

我还不清楚如何管理 Web 应用程序的 LINQ 数据上下文提升时间。任何建议都非常感谢。

谢谢。

【问题讨论】:

    标签: asp.net linq


    【解决方案1】:

    using语句是dispose 对象一旦之间的代码 语句已运行。

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

    编辑:

    您实际上不必在数据合同上调用 dispose,只要您枚举整个结果集,如下所述:When should I dispose of a data context

    【讨论】:

    • LINQ 数据上下文不(通常)保持打开的连接。请参阅stackoverflow.com/questions/389822/… - 特别是我引用马特沃伦的部分。
    • 哈,你每天都能学到一些东西。我猜在这种情况下使用一次性用品是一次性的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 2020-01-31
    • 1970-01-01
    • 2016-05-12
    • 2011-03-26
    • 1970-01-01
    相关资源
    最近更新 更多