【问题标题】:Using a DataContext static variable使用 DataContext 静态变量
【发布时间】:2010-10-21 15:40:39
【问题描述】:

我最近继承了一个使用 Linq2SQL 的 ASP.Net 应用程序。目前,它在每个页面中都将其 DataContext 对象声明为静态,我在第一次发现它们为空时创建它们(单例,有点)。

无论好坏,我都需要 cmets。在我只需要从数据库中读取的情况下以及我需要写入的情况下。

整个应用程序只有一个 DataContext 实例怎么样?

【问题讨论】:

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


    【解决方案1】:

    恐怕每个应用程序一个 DataContext 的性能会很差。对于初学者来说,DataContext 不是线程安全的,因此即使将其用作页面的静态成员也是一个坏主意。正如 asgerhallas 所提到的,将上下文用于一个工作单元是理想的——通常是单个请求。其他任何事情,您都会开始发现所有数据都在内存中,并且如果没有显式刷新,您将看不到更新。以下是一些与这两个主题相关的帖子:Identity MapsUnits of Work

    【讨论】:

      【解决方案2】:

      我过去每个请求都有一个 DataContext,但这取决于您面临的场景。 我认为 L2S 的重点是将它与工作单元模式一起使用,在这种模式下,每个......以及工作单元都有一个上下文。但它不适用于大型应用程序,因为以后很难将实体重新附加到新上下文。

      Rick Strahl 在这里对这个主题做了很好的介绍:

      http://www.west-wind.com/weblog/posts/246222.aspx

      我可以说我过去遇到过问题的一件事是有一个上下文来读取和写入场景。当您只是阅读时,在数据上下文中完成的更改跟踪是相当大的开销,这是大多数 Web 应用程序大部分时间都倾向于做的事情。您可以将 datacontext 设置为只读,这会大大加快速度 - 但是您需要另一个上下文来编写。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-28
        • 1970-01-01
        • 2013-04-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多