基於我在Entity Framework in layered architecture處給出的問題給出的答案,現在我想將我的存儲庫(現在只負責CRUD抽象,而不是業務邏輯的東西)移動到DAL並保留業務邏輯的BLL。
我得出的結論是,實體環境應該被視爲一個工作單元,因此不會被重用。所以我想在我的倉庫中爲每個HttpContext創建一個obejctcontext來防止性能/線程[un]安全問題。我想在庫定義的ObjectContext如下:訪問數據訪問層中的HttpContext.Current
public MyDBEntities ctx
{
get
{
string ocKey = "ctx_" + HttpContext.Current.GetHashCode().ToString("x");
if (!HttpContext.Current.Items.Contains(ocKey))
HttpContext.Current.Items.Add(ocKey, new MyDBEntities());
return HttpContext.Current.Items[ocKey] as MyDBEntities ;
}
}
在這種情況下,DAL項目應該知道HttpContext.Current變量。我不確定這是否是一種好的做法,並希望知道您的意見。
來吧夥計,任何人? – Kamyar 2011-01-06 07:51:38