我正在使用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;
}
}
那么如何处理这两种情况?