基于对我在分层架构中的实体框架中的问题给出的答案,现在我想将我的存储库(现在只负责 CRUD 抽象,而不是业务逻辑的东西)移动到 DAL 并为业务逻辑保留 BLL。
我得出的结论是,实体上下文应被视为工作单元,因此不应重用。所以我想在我的存储库中为每个 HttpContext 创建一个 obejctcontext 以防止性能/线程 [un] 安全问题。我想在存储库中定义 objectcontext 如下:
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 变量。我不确定这是否是一个好的做法,并想知道您的意见。