首页 > 解决方案 > 使用 NInject 时如何配置 EntityFrameworkCore 的 DbContext

问题描述

在 .net 核心启动类的 ConfigureServices 中,您可以按如下方式配置 dbcontext。

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<DotNetCoreT1DbContext>(options => options.UseSqlServer(_configuration.GetConnectionString("DefaultConnection")));

    services.AddMvc();
}

如果我使用 NInject 或者可能是 Autofac,我该如何配置?

使用 NInject,我尝试了以下方法。

kernel.Bind<DotNetCoreT1DbContext>().ToMethod(m => new DotNetCoreT1DbContext(GetDbContextOptionsForCurrentRequest()));

GetDbContextOptionsForCurrentRequest 定义如下。

private DbContextOptions GetDbContextOptionsForCurrentRequest()
{
   var options = new DbContextOptions();
   return options;
}

问题是我无法更新 DbContextOptions ,因此上述方法不起作用。它不是公共演员。

如何使用 NInject 或 Autofac 并配置 EF Core DbContext?

标签: entity-frameworkasp.net-coreef-core-2.1

解决方案


问题是我无法更新 DbContextOptions ,因此上述方法不起作用。它不是公共演员。

使用选项生成器构建选项。这就是它的用途,因为DbContextOptions它并非旨在直接在您的应用程序代码中构建。

例如

private DbContextOptions GetDbContextOptionsForCurrentRequest() {
    var optionsBuilder = new DbContextOptionsBuilder<DotNetCoreT1DbContext>();

    //configure builder
    //optionsBuilder.Use*(...);

    //get options
    var options = optionsBuilder.Options;

    return options;
}

参考配置 DbContextOptions


推荐阅读