使用ASP.Net MVC DbContext进行依赖注入

时间:2018-06-19 12:25:41

标签: c# asp.net-mvc entity-framework dependency-injection dbcontext

我正在使用Unity.Mvc3插件进行ASP.Net MVC应用程序的依赖注入。 对于具有已定义服务的控制器,但与实体框架DbContext对象,它不能很好地工作。

方案1:我已经在 Bootstrapper Global.asax.cs 文件中注册了我的服务和界面,如下所示:

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

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

然后在Controller中,我正在初始化Service并调用该方法。一切正常。

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;
    }
 }

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

0 个答案:

没有答案