Отделение уровня доступа к данным от Business Logi c Layer. Net Core 3.1 - PullRequest
0 голосов
/ 04 апреля 2020

В настоящее время у меня есть веб-приложение. NET Core 3.1, которое содержит класс Entity Framework DBContext . Во время запуска startup.cs извлекает строку подключения и вставляет DBContext в класс репозиторий , в котором он мне нужен. Мне нужно переместить репозиторий и DBContext в свой собственный проект в рамках Solution, чтобы веб-приложение могло продолжать использовать так же, как и другой проект консольного приложения в Solution (который будет работать как обычная серверная служба на нашем сервере).

Мои Q *

  1. Как мне вставить DBContext (с правильной строкой соединения) и репозиторий в веб-приложение а консольное приложение?
  2. Возможно ли это (Q1) или мне просто нужно вызвать экземпляр без внедрения зависимостей?
  3. Как DBContext может получить строку подключения без startup.cs?

1 Ответ

0 голосов
/ 06 апреля 2020

Одним из вариантов может быть добавление метода расширения в ваш модуль следующим образом:

    {
        public static IServiceCollection AddMyModule(this IServiceCollection services, Action<DbContextOptionsBuilder> dbSetupAction, IConfiguration config = null)
        {
           //Add all services (Dependency injections)    
            return services;
        }
    }

, а затем вы можете вызывать его внутри вашего основного запуска

public void ConfigureServices(IServiceCollection services)
{
....
ervices.AddMyModule(options => options.UseSqlServer(Configuration.GetConnectionString("Default"), b => b.MigrationsAssembly("AppName")), Configuration.GetSection("MyModuleName"));
...
}

И Конечно, вы должны ссылаться на проект вашего модуля из вашего основного проекта (где находится Startup)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...