C# 构建到dl层的连接字符串和配置管理器问题

C# 构建到dl层的连接字符串和配置管理器问题,c#,dapper,C#,Dapper,我有一个问题,我通过winforms应用程序共享我的dl层,现在想通过.net核心应用程序共享它,但我遇到的问题是配置管理器的处理方式与它使用应用程序设置的方式不同。我当时想做的是做以下几点改变,以避免出现最小的变化。我正在使用dapper和.NETCore3.0 在我的构造函数中,我的上下文如下所示,因此如果我想从API层向下传递连接字符串,我可以这样做,这意味着我将只在我已经稳定的上下文层中进行更改,我使用ado.net和dapper 这是一种可靠的方法,还是有更好的方法检索连接字符串,这样

我有一个问题,我通过winforms应用程序共享我的dl层,现在想通过.net核心应用程序共享它,但我遇到的问题是配置管理器的处理方式与它使用应用程序设置的方式不同。我当时想做的是做以下几点改变,以避免出现最小的变化。我正在使用dapper和.NETCore3.0

在我的构造函数中,我的上下文如下所示,因此如果我想从API层向下传递连接字符串,我可以这样做,这意味着我将只在我已经稳定的上下文层中进行更改,我使用ado.net和dapper

这是一种可靠的方法,还是有更好的方法检索连接字符串,这样我就不必对数据层进行任何更改

我怀念旧的xml文件使事情变得简单多了

public OMSContext()
{
    constr = ConfigurationManager.AppSettings["DataConnectionLive"];
}
public OMSContext(string ConnectionForApi)
{
    constr = ConnectionForApi;
}

我不确定我是否完全理解您的问题,但是使用静态配置类是一种流行的方法

public static class Config
{
    public static String ConnectionString { get; set; }
}
这不是在应用程序的其他地方使用configuration manager。要在任何地方访问属性,只需执行
Config.ConnectionString

要实际填充
Config
类,可以指定单独的类来填充它们,并在启动时运行它。对于标准.NET:

public class ConfigSetup
{
    public static void SetupConfig()
    {
        Config.ConnectionString = ConfigurationManager.AppSettings["ConnectionString"];
    }
}
对于Startup.cs中的.NET core:

public IConfiguration _config { get; }

public Startup(IHostingEnvironment env)
{
    _environmentPath = env.ContentRootPath;

    _config = new ConfigurationBuilder().SetBasePath(env.ContentRootPath).AddJsonFile("appSettings.json").Build();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    Config.ConnectionString = _config["ConnectionString"];
}

因此,对于每个项目类型,您可能有几个
ConfigSetup
s,但只需要运行与当前项目相关的一个。这意味着除了启动之外,您将在任何地方保持代码不变。

这将适用于.net framework,但是如果.net core中的配置管理器在.net core中无效,那么.net core又如何呢3@rogue39nin我添加了一些代码,可以从.NETCore中的appsettings.json中读取。试图避开技术部门通常不会有好的效果结束。如果你想要一个坚实的方法,那么遵循坚实的原则。您会惊讶于当前的“问题”是如何成为一个非问题的,因为它允许您的代码在不耦合的情况下转换到不同的平台。我认为您不理解我关于技术债务(打字错误)的陈述。这是一个公开的声明,并不意味着轻蔑。