В настоящее время у меня есть веб-приложение .NET Core 3.1, содержащее класс Entity Framework DBContext. Во время выполнения startup.cs извлекает строку подключения и внедряет DBContext в класс repository, в котором он мне нужен. Мне нужно переместить repository и DBContext в свой собственный проект в Решении, чтобы веб-приложение могло продолжать использовать, а также другой проект консольного приложения в Решении (который будет работать как обычная серверная служба на нашем сервере ).
Мои вопросы
- Как внедрить DBContext (с правильной строкой подключения) и репозиторий в веб-приложение и консольное приложение?
- Возможно ли это (Q1) или мне просто нужно вызвать экземпляр без использования внедрения зависимостей?
- Как DBContext может получить строку подключения без startup.cs?
1 ответ
Одним из вариантов может быть добавление метода расширения в ваш модуль следующим образом:
{
public static IServiceCollection AddMyModule(this IServiceCollection services, Action<DbContextOptionsBuilder> dbSetupAction, IConfiguration config = null)
{
//Add all services (Dependency injections)
return services;
}
}
А затем вы можете вызвать его внутри своего основного StartUp
public void ConfigureServices(IServiceCollection services)
{
....
ervices.AddMyModule(options => options.UseSqlServer(Configuration.GetConnectionString("Default"), b => b.MigrationsAssembly("AppName")), Configuration.GetSection("MyModuleName"));
...
}
И, конечно же, вам нужно будет ссылаться на проект вашего модуля из вашего основного проекта (где находится Startup)
Похожие вопросы
Новые вопросы
.net-core
.NET Core является преемником .NET Framework с открытым исходным кодом. Он может использоваться в самых разных приложениях и в различных областях: от серверов и центров обработки данных до приложений и устройств. .NET Core поддерживается Microsoft на Windows, Linux и macOS.