我最近继承了一个使用 Linq2SQL 的 ASP.Net 应用程序。目前,它在每个页面中都将其 DataContext 对象声明为静态,并且在我第一次发现它们为空(单例)时创建它们。
如果这是好的或坏的,我需要评论。在我只需要从数据库中读取的情况下以及在我需要写入的情况下。
整个应用程序只有一个 DataContext 实例怎么样?
我最近继承了一个使用 Linq2SQL 的 ASP.Net 应用程序。目前,它在每个页面中都将其 DataContext 对象声明为静态,并且在我第一次发现它们为空(单例)时创建它们。
如果这是好的或坏的,我需要评论。在我只需要从数据库中读取的情况下以及在我需要写入的情况下。
整个应用程序只有一个 DataContext 实例怎么样?
我曾经每个请求都有一个 DataContext ,但这取决于您面临的场景。我认为 L2S 的重点是将它与工作单元模式一起使用,在这种模式下,每个......以及工作单元都有一个上下文。但它在大型应用程序中效果不佳,因为以后很难将实体重新附加到新上下文。
Rick Strahl 在这里对该主题进行了很好的介绍:
http://www.west-wind.com/weblog/posts/246222.aspx
我可以说我过去遇到过问题的一件事是,有一个上下文来读取和写入场景。当您只是阅读时,在数据上下文中完成的更改跟踪是相当大的开销,这是大多数 web 应用程序大部分时间都倾向于做的事情。您可以将 datacontext 设为只读,它会大大加快速度 - 但随后您将需要另一个上下文来编写。