在.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?
答案 0 :(得分:1)
问题是我无法更新DbContextOptions,因此上述内容不起作用。它不是公共角。
使用选项构建器构建选项。这就是它的用途,因为DbContextOptions
并非旨在直接在您的应用程序代码中构造的。
例如
private DbContextOptions GetDbContextOptionsForCurrentRequest() {
var optionsBuilder = new DbContextOptionsBuilder<DotNetCoreT1DbContext>();
//configure builder
//optionsBuilder.Use*(...);
//get options
var options = optionsBuilder.Options;
return options;
}