在我已經運行跨Web應用程序LinqToSql靜態DataContext的,我發現下面的代碼來處理的DataContext與LinqToSQL打交道時在Web應用程序
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的更多,因此,我認爲你是對的。但是在我繼承的應用程序中,這是令人困惑的,因爲在每個方法開始時,它們都會重新查詢db以獲取信息,然後修改datacontext的實例並在其上提交更改。
由此,我認爲這種方法應該是不鼓勵的,因爲它給人的錯誤印象是datacontext是靜態的並且在請求之間持續存在。如果未來的開發人員認爲在方法開始時重新查詢數據是因爲他們認爲數據已經存在,他們可能會遇到問題並且不明白爲什麼。
所以我想我的問題是,如果這種方法在未來的發展中不鼓勵?
這裏有一個很好的帖子,詳細介紹:http://blog.stevensanderson.com/2007/11/29/linq-to-sql-the-multi-tier-story/ – 2010-02-03 00:28:49
我們只是推出了這個概念的一個變種今晚出門。 – 2010-02-12 10:01:32