У меня есть новый проект .NET Core Web API, который имеет следующую структуру проектов:
API -> Бизнес / Домен -> Инфраструктура
API очень тонкий, только с API-методами. Уровень Business / Domain имеет всю мою бизнес-логику. И наконец, на моем уровне инфраструктуры есть классы БД, использующие EF Core 2.0.
Я знаю, что с помощью встроенного в .NET Core Inpendency Injection я могу добавить ссылку из проекта API в проект инфраструктуры, а затем добавить следующий код в файл StartUp.cs:
services.AddDbContext<MyContext>(options => options.UseSqlServer(connectionString));
Однако я бы хотел придерживаться более традиционного разделения интересов. До сих пор я добавил модуль в свой слой инфраструктуры, который пытается сделать регистрацию следующим образом:
builder.Register(c =>
{
var config = c.Resolve<IConfiguration>();
var opt = new DbContextOptionsBuilder<MyContext>();
opt.UseSqlServer(config.GetSection("ConnectionStrings:MyConnection:ConnectionString").Value);
return new MyContext(opt.Options);
}).AsImplementedInterfaces().InstancePerLifetimeScope();
DBContext, однако, не регистрируется. Любой класс, который пытается получить доступ к внедренному DBContext, не может разрешить параметр.
Есть ли способ зарегистрировать DBContext в отдельном проекте, используя AuftoFac в проекте .NET Core Web API?