我的控制器需要两种服务,并且都需要具有相同的dbcontext接口,

public class MyController : Controller
    {
        protected readonly ISomeService _some;
               protected reaonly IUnitOfWork _unitOfWork

        public MyController(IUnitOfWork unitOfWork, ISomeService some)
        {
            _some = some;
            _unitOfWork = unitOfWork

        }


//这是我的配置

services.AddDbContext<MyContext>(x =>
   {

    x.UseSqlServer(Configuration.GetConnectionString("coon"));

  });

最佳答案

From the documentation


  实体框架上下文
  
  实体框架上下文应添加到服务容器
  使用范围的生命周期。这是通过电话自动处理的
  注册数据库上下文时将其添加到AddDbContext方法。
  使用数据库上下文的服务也应使用范围
  一生。


因此,AddDbContext会将其添加为作用域生存期。

您需要确保将控制器/或其他使用它的地方也添加到DI中作为“范围”项。

每个请求一次创建范围的生命周期服务。

关于c# - 如何在 Controller 中每个请求仅注入(inject)一个DbContext实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54329465/

10-10 23:46