我目前正在ASP.NET MVC中编写一个项目。我有一个Web项目和DB项目,它只与DB一起使用。这些层看起来像这样,它们只与兄弟层互操作。
数据库项目(EF CF) - 发出数据库请求
存储库 - 抽象底层数据库模型
服务 - 所有业务逻辑都在这里发生。
ASP.NET MVC Web应用程序 - 前端演示文稿
它们必须松散耦合,因此我使用的是Unity DI / IoC框架
我想要实现的是为每个http请求创建一个DbContext
实例。以下是我到目前为止实施的逻辑。
public class MyAppBaseController : Controller {
protected override void OnActionExecuting(ActionExecutingContext filterContext) {
if (HttpContext.Items["DbModel"] == null) {
HttpContext.Items["DbModel"] = MySingleton.Container.Resolve<DbContext>();
}
base.OnActionExecuting(filterContext);
}
}
如果当前Items
的{{1}}词典没有HttpContext
,请求管道中的内容就是增加一个。所有控制器都继承自它。我这样做的原因是,在执行期间将调用的所有存储库应该对所有顺序数据库调用使用完全相同的DbContext
对象。
DbContext
相结合?