我应该保留LINQ DataContext多长时间? ASP.Net页面

时间:2010-01-21 16:04:45

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

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

3 个答案:

答案 0 :(得分:3)

史蒂夫桑德森(Pro ASP.NET MVC Framework的作者)在这个问题上有一个有趣的blog post。它的要点是DataContext应该保持在每个“工作单元”周围,这基本上与“请求”相关。如果您没有修改对象并且不需要将任何更改保留(更新)回DB,我想你可以逃脱更短的寿命。

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

答案 1 :(得分:2)

我会说只要你需要它就保持上下文,这是合适的。在上下文的生命周期和正在发出的请求数之间存在平衡。

您不希望为数据库的每个请求创建上下文,类似地,您可能不希望在应用程序的整个生命周期中维护上下文(在可能的情况下)。

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

答案 2 :(得分:1)

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

总的来说,我没有看到以你现在的方式做到这一点的表现。