首页 > 解决方案 > 使用 ASP.Net MVC DbContext 进行依赖注入

问题描述

我将 Unity.Mvc3 插件用于 ASP.Net MVC 应用程序的依赖注入。它适用于具有已定义服务的控制器,但不适用于实体框架 DbContext 对象。

场景 1:我在BootstrapperGlobal.asax.cs文件中注册了我的服务和接口,如下所示:

private static IUnityContainer BuildUnityContainer()
{
    container.RegisterType<IDashboardAppService, DashboardAppService>();
    ..........
}

protected void Application_Start()
{
    .....
    Bootstrapper.Initialise();
}

在 Controller 中,我正在初始化服务并调用该方法。它工作正常。

public class HomeController : Controller
{
        private readonly IDashboardAppService _dashboardAppService;
        public HomeController(IDashboardAppService dashboardAppService)
        {
            _dashboardAppService = dashboardAppService;
        }
}

但是如果我想像下面一样使用 Service 和 DbContext 类,我会收到错误消息

“在创建模型时不能使用上下文。如果在 OnModelCreating 方法中使用上下文或多个线程同时访问同一个上下文实例,则可能会引发此异常。请注意,DbContext 和相关类的实例成员是不保证是线程安全的。Unity.MVC3"

以下是错误场景:

public class HomeController : Controller
{
    private readonly IDashboardAppService _dashboardAppService;
    private readonly RmgDbContext _context;
    public HomeController(IDashboardAppService dashboardAppService, RmgDbContext context)
    {
        _dashboardAppService = dashboardAppService;
        _context = context;
    }
 }

那么如何处理这两种情况呢?

标签: c#asp.net-mvcentity-frameworkdependency-injectiondbcontext

解决方案


推荐阅读