在我接触到的一个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不是线程安全的并且需要保留静态副本时,我对这种方法感到不确定。
在Web应用程序中采用这种方法是否可行?
@Longhorn213 - 根据您所说和我因此而更深入地了解HttpContext,我认为您是正确的。但是,在我继承的应用程序中,每个方法的开头都会重新查询数据库以获取信息,然后修改该数据上下文的实例并提交更改。
基于此,我认为应该避免使用这种方法,因为它会给人一种错误的印象,即数据上下文是静态的,并在请求之间持久存在。如果未来的开发人员认为在方法开始时重新查询数据是因为他们认为数据已经存在,那么他们可能会遇到问题,而不理解原因。
所以,我的问题是,未来的开发中是否应该避免使用这种方法?