【发布时间】:2010-10-30 18:24:19
【问题描述】:
在我遇到的一个web应用程序中,我发现以下代码在处理LinqToSQL时处理DataContext
public partial class DbDataContext
{
public static DbDataContext DB
{
get
{
if (HttpContext.Current.Items["DB"] == null)
HttpContext.Current.Items["DB"] = new DbDataContext();
return (DbDataContext)HttpContext.Current.Items["DB"];
}
}
}
然后在以后引用它:
DbDataContext.DB.Accounts.Single(a => a.accountId == accountId).guid = newGuid;
DbDataContext.DB.SubmitChanges();
在处理 LinqToSQL 时,我一直在研究最佳实践。
我不确定这个在处理 DataContext 不是 ThreadSafe 并保留它的静态副本时所采取的方法。
这是采用 Web 应用程序的好方法吗?
@Longhorn213 - 根据你所说的以及我对 HttpContext 的了解越多,我认为你是对的。但是在我继承的应用程序中,这令人困惑,因为在每个方法的开头,他们都在重新查询数据库以获取信息,然后修改该数据上下文的实例并提交更改。
因此,我认为这种方法不应该被劝阻,因为它给人一种错误的印象,即数据上下文是静态的并且在请求之间持续存在。如果未来的开发人员认为在方法开始时重新查询数据,因为他们认为数据已经存在,他们可能会遇到问题并且不明白为什么。
所以我想我的问题是,在未来的开发中应该不鼓励这种方法吗?
【问题讨论】:
-
这是一篇包含更多详细信息的精彩帖子:blog.stevensanderson.com/2007/11/29/…
-
今晚我们刚刚推出了这个概念的一个变体。
标签: c# asp.net linq-to-sql datacontext