我需要在appsetting.json中的两个地方添加数据库连接字符串。
是否有可能在json文件中引入公共变量或与json路径相关的引用,以避免潜在的问题?
如果不触摸c#代码就拥有它会很可爱。
{
...
"ConnectionStrings": {
"Default": "Host=localhost;Database=db;Port=5432;Username=postgres;Password=postgres"
},
"Nlog": {
"targets": {
"database": {
"type": "Database",
"dbProvider": "Npgsql.NpgsqlConnection, Npgsql",
"connectionString": "Host=localhost;Database=db;Port=5432;Username=postgres;Password=postgres",
...
}
}
...
}
没有没有对此的支持。不过有两件事:
虽然每种情况下提供的数据都是相同的,但是两件事是not相同的。当两者恰好都使用相同的数据源时,这并不是重复,因为事实并非如此。
ConnectionStrings
部分没有什么神奇之处,只是它允许您使用GetConnectionString
糖。您也可以执行以下操作:
services.AddDbContext(o =>
o.UseSqlServer(Configuration["Nlog:targets:database:connectionString"]));
是否合适是一个单独的讨论。关键是,如果您只是僵持不下,就不必have多次拥有该值。
NLog可以在appsettings.json中查找值。您可以使用${configsetting}
:]
{ ... "ConnectionStrings": { "Default": "Host=localhost;Database=db;Port=5432;Username=postgres;Password=postgres" }, "Nlog": { "targets": { "database": { "type": "Database", "dbProvider": "Npgsql.NpgsqlConnection, Npgsql", "connectionString": "${configsetting:item=ConnectionStrings.Default}", ... } } ... }
另请参阅https://github.com/NLog/NLog/wiki/ConfigSetting-Layout-Renderer