我必须使用没有实体框架(学校分配)的存储库模式来创建具有N层架构的项目。我希望能够从独立于UI的配置文件中获取配置设置,这样我就可以使用正确的连接字符串,因为它必须支持多种数据库类型。
我想在我的n层架构上使用WPF UI和ASP.NET网站,并以完全相同的方式读取配置文件
在WPF项目中,它使用App.config,但在ASP.NET Core 2.0中,它使用Appsettings.json。
这是我的App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<appSettings>
<!-- Context has to be set to use the right database-->
<add key="Context" value="MSSQL"/>
</appSettings>
<connectionStrings>
<add name="MSSQL" connectionString="my connectionstring here"/>
<add name="ORACLE" connectionString="my connectionstring here"/>
</connectionStrings>
</configuration>
这是appsettings.json
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"Context": {
"ContextType": "MSSQL"
},
"ConnectionStrings": {
"MSSQL": "connectionstring",
"ORACLE": "connectionstring",
"MYSQL": "connectionstring"
}
}
我从app.config获取上下文和连接字符串,如下所示:
Context = ConfigurationManager.AppSettings["Context"];
ConnString = ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings["Context"]].ConnectionString;
我知道ASP.NET Core 2.0没有ConfigurationManager类。但是,是否有办法以完全相同的方式从UI(WPF和ASP.NET)获取配置设置?理想情况下,我更喜欢与ConfigurationManager类似的方法
如果有人能指出我如何处理这个问题,我将不胜感激。
答案 0 :(得分:2)
实际上有一种更简单的方法:) - 这是最佳实践:
How to read AppSettings values from Config.json in ASP.NET Core
对于Wpf,您应该使用ConfigurationManager,这是一个简单的方法,因为它是Microsoft希望使用/使用它的方式。 但是,您可以为Wpf实现类似上面的功能,但是您必须记住,当您偏离“内置”方法时需要付出代价 - 比如部署 - 使用app.config允许您修改配置而无需重新部署,从天蓝色门户网站等进行修改
答案 1 :(得分:0)
我通过添加一个名为&#34; ConfigSettings&#34;的类来解决这个问题。看起来像这样:
private string ConnString;
private string Context;
public Factory(IConfig config)
{
this.ConnString = config.Connstring;
this.Context = config.Context;
}
然后我把它传递给我的工厂:
fft
厂:
fft
现在我要为.NET核心所做的就是创建ConfigSettings类并从appsettings.json获取配置并将其传递给我的工厂。
如果这是不好的做法,我很乐意听到它。