Хотя обычно рекомендуется иметь конфигурацию в центральном расположении, ничто не ограничивает отдельные проекты от управления их собственной конфигурацией.
В следующем примере информация строки подключения хранится во внешнем datasettings.json file
{
"ConnectionStrings": {
"DefaultConnection": "connection string here"
}
}
Простой пример автономного расширения установки для слоя может выглядеть как
public static class MyServiceCollectionExtensions {
public static IServiceCollection AddMyDataLayer(this IServiceCollection services, string name = "DefaultConnection") {
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("datasettings.json"); //<<< just an example
var connectionStringConfig = builder.Build();
services
.AddEntityFrameworkSqlServer()
.AddDbContext<YourDbContext>((serviceProvider, options) =>
options
.UseSqlServer(connectionStringConfig.GetConnectionString(name))
);
return services;
}
}
И добавлено в Запуск
using my.data.layer;
//...
public void ConfigureServices(IServiceCollection services) {
//...
services.AddMyDataLayer();
//...
}
Уровень данных в этом случае управляет своей собственной конфигурацией.Его файл настроек является внешним по отношению к настройкам приложения.
Существует пространство для расширения, так как дополнительными опциями можно управлять и локально, и оно хорошо работает, например, для плагинов «под ключ».
Характер модуля Конфигурация в ASP.NET Core допускает такие гибкие возможности.