c# - 使用 ASP.Net MVC 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 中,我正在初始化服务并调用该方法。它工作正常。
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;
}
}
那么如何处理这两种情况呢?
解决方案
推荐阅读
- javascript - 在解决原始承诺之前等待嵌套的 JS 承诺完成
- .net - 无法加载文件或程序集“System.IO.Pipelines”
- wordpress - WP主页上的无限循环
- mongodb - 地址访问无效:Mongo v4.0.5 为 0
- excel - 是什么导致 VBA 用户窗体中的 -2147352571 类型不匹配错误?
- javascript - Angular Material mat-select 设置默认选择值
- wordpress - 一个产品有多个实例,每个实例销售一次
- c# - Azure 存储客户端加密
- visual-studio-2013 - 如何更改 Abaqus 求解器可执行文件名
- google-cloud-platform - 基于谷歌计算引擎的 mpich 集群中的主机密钥验证失败