Зачем мне создавать область для разрешения DbContext, только если DOTNET_ENVIRONMENT не является «локальным»?
Когда среда установлена для «разработки», мне нужно разрешить DbContext, используя область: используя varscope = host.Services.CreateScope(), так как я получаю следующую ошибку без:
Невозможно разрешить ограниченную службу «foo.bar.baz.AssetGovernanceContext»
от корневого поставщика.
Но когда DOTNET_ENVIRONMENT< Для параметра /code> установлено значение «локальный», я могу разрешить DbContext от корневого поставщика (т. е. область действия не требуется).
Есть ли корневой поставщик em> провайдер обычно используется для разрешения синглтонов?
# Add DbContext to service collection
services.AddDbContext(options =>
{
var connectionString = configuration.GetConnectionString("SqlServer") ?? throw new ConfigurationErrorsException("Connection string not found: SqlServer");
options.UseSqlServer(connectionString);
});
# Resolve the DbContext after calling IHost.Build()
public static class HostExtensions
{
public static IHost EnsureDatabaseCreated(this IHost host)
{
var createDatabase = host.Services.GetRequiredService().GetValue("Database:EnsureCreated");
if (createDatabase)
{
using var scope = host.Services.CreateScope(); # only needed if DOTNET_ENIRONMENT isn't "local"
var dbContext = scope.ServiceProvider.GetRequiredService();
dbContext.Database.EnsureCreated();
}
return host;
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... nt-is-loca
Почему DbContext можно разрешить из корневой области, если среда «локальная», а не «разработка»? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение