У меня есть сценарий, в котором в StartUp.cs мне нужно настроить EF с DbContext следующим образом:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddDbContext<TestProjDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddMvc();
}
Однако мое решение разбито на несколько уровней ... Например: Api, Data, Domain, Services ...
Я пытаюсь сделать так, чтобы проект Api ссылался только на проекты домена и служб. Однако DbContext меня все испортил. TestProjDbContext находится в проекте Data вместе с моими репозиториями, миграциями, классом единиц работы и т. Д.
В моем проекте Domain у меня есть несколько интерфейсов, таких как IUnitOfWork, ICustomerRepository и т. Д. Я также создал интерфейс ITestProjDbContext в этом проекте, думая, что каким-то образом смогу передать его в services.AddDbContext в StartUp.cs. Однако это кажется невозможным.
Как я могу сохранить файл TestProjDbContext.cs внутри моего уровня данных, чтобы Api не знал об уровне данных и только уровне домена? Или DbContext не должен находиться на уровне данных, а просто находиться на уровне домена без использования интерфейса?