【问题标题】:How long should I keep my LINQ DataContext around? ASP.Net page我应该将 LINQ DataContext 保留多长时间? ASP.Net 页面
【发布时间】:2010-01-21 16:04:44
【问题描述】:

我正在开发一个 ASP.Net 网络表单应用程序,我想知道我应该将数据上下文保留多长时间。目前我在每个页面加载时创建一个上下文,并且该上下文用于整个页面加载的每个数据库访问。我是否应该仅在需要它的每个方法中使用上下文,并在方法结束时处理?我知道一旦退出上下文的 using 块,我就无法访问从上下文中检索到的对象,但这不是我的设计问题。

【问题讨论】:

    标签: c# asp.net linq-to-sql datacontext


    【解决方案1】:

    Steve Sanderson(Pro ASP.NET MVC Framework 的作者)在这个问题上有一个有趣的blog post。它的要点是 DataContext 应该围绕每个“工作单元”保留,这基本上与“请求”相关。我想如果您不修改对象并且不需要将任何更改持久化(更新)回数据库,那么您可以避免使用较短的生命周期。

    您可能还想在 SO 上查看“When should I dispose of a data context?”。

    【讨论】:

      【解决方案2】:

      我想说,只要您需要并且合适,您就可以保留上下文。在上下文的生命周期和发出的请求数量之间需要取得平衡。

      您不想为对数据库的每个请求创建上下文,同样,您可能不想在应用程序的整个生命周期(如果可能的话)维护上下文。

      我会查看代码正在执行的有效事务,并希望在每个事务中维护上下文。这种粒度还应该有助于确保您的代码是模块化和可扩展的(因为依赖项应该更少)。

      【讨论】:

        【解决方案3】:

        我已经按照您描述的方式以及基于 HTTP 请求绑定和销毁的另一种方式完成了它。那就是允许单个页面从头到尾使用一个 DataContext。

        总体而言,按照您目前的做法,我没有看到性能受到很大影响。

        【讨论】:

          猜你喜欢
          • 2010-12-31
          • 1970-01-01
          • 2012-03-25
          • 1970-01-01
          • 2015-10-31
          • 2011-02-11
          • 2012-10-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多