Я полагаю, что вы работаете с aspnet-core, таким образом, используя Entity Framework , поскольку ваш ORM будет работать в этой ситуации.
Я согласен с вами в отношении регистрации ваших репозиториев как части IUnitOfWork
и последующего добавления их в качестве службы в ваш контейнер DI, который вы затем добавите в свои контроллеры.
Чтобы ответить на ваш второй вопрос, давайте предположим, что ваша реализация SqlUnitOfWork
имеет конструктор, который получает экземпляр DbContext
.
В ASP.NET Core DbContext
добавляется в контейнер DI и, таким образом,
любой другой сервис, который требует или имеет зависимость от DbContext в
это конструктор, он будет автоматически разрешен DI
контейнер.
Сначала не забудьте указать строку подключения в appsettings.json
следующим образом.
![enter image description here](https://i.stack.imgur.com/9XeBZ.png)
Затем теперь давайте воспользуемся этой строкой соединения, чтобы добавить объект DbContext
в наш контейнер DI и немного Дальнейшее чтение при настройке DbContext в EF Core
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Database")));
}
После этого регистрация других сервисов в нашем DI-контейнере, которые требуют нашего контекста, будет очень простой, поскольку контейнер разрешит эту зависимость для нас.
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IUnitOfWork, SqlUnitOfWork>();
}
Надеюсь, это ответит на ваши вопросы. Если нет, дайте мне знать.