使用NInject时如何配置EntityFrameworkCore的DbContext

时间:2018-10-10 10:46:01

标签: entity-framework asp.net-core ef-core-2.1

在.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?

1 个答案:

答案 0 :(得分:1)

  

问题是我无法更新DbContextOptions,因此上述内容不起作用。它不是公共角。

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

例如

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

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

    //get options
    var options = optionsBuilder.Options;

    return options;
}

引用Configuring DbContextOptions