Как настроить DbContext EntityFrameworkCore при использовании NInject - PullRequest
0 голосов
/ 10 октября 2018

В классе запуска ConfigureServices .net core вы можете настроить 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, поэтому вышеописанное не работает.Это не публичный ctor.

Как мне использовать NInject или Autofac и настроить EF Core DbContext?

1 Ответ

0 голосов
/ 10 октября 2018

Проблема в том, что я не могу newup DbContextOptions, и поэтому выше не работает.Это не общедоступный ctor.

Создайте параметры, используя конструктор параметров.Это то, для чего DbContextOptions не предназначен для непосредственного создания в коде вашего приложения.

Например,

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

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

    //get options
    var options = optionsBuilder.Options;

    return options;
}

Ссылка Настройка DbContextOptions

...