c#在运行时从文件加载connectionString

本文关键字:加载 connectionString 文件 运行时 | 更新日期: 2023-09-27 18:17:58

我已经有一个应用程序(控制台),它正在从bin目录中读取连接字符串。

我们计划从命令行传递一个指向配置的目录路径。通过这种方式,我们可以通过更改命令行参数"ConfigurationDirectory"

来切换指向不同的db。

这需要我们动态加载连接字符串,我的连接字符串的格式如下:

<connectionStrings>
    <add name="DB1" connectionString="Data Source=DB;Initial Catalog=someCatalog;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" />
    <add name="DB2" connectionString="Data Source=DBName;Initial Catalog=someCatalog2;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" />
  </connectionStrings>

我们没有配置标签。

要动态加载连接字符串,我正在尝试:

var connectionStringconfigfile = "C:Somepath'connectionstring.config"
    ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
                            configMap.ExeConfigFilename = connectionStringconfigfile;
                            Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
                            config.Save(ConfigurationSaveMode.Modified);
                            ConfigurationManager.RefreshSection("connectionStrings");

我无法使用我目前拥有的connectionstring文件,因为它抱怨没有配置标签。

问题是我的代码已经使用了以下内容来初始化连接字符串:

ConfigurationManager.ConnectionStrings["DB1"].ConnectionString

用这种新方法,上面的行似乎不工作,总是给我null,有没有一种方法,使我不必改变我现有的代码?

c#在运行时从文件加载connectionString

如果您将外部配置文件包装在块,像这样:

<configuration><br>
    <connectionStrings><br>
        <add name="DB1" connectionString="Data Source=DB;Initial Catalog=someCatalog;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" /><br>
        <add name="DB2" connectionString="Data Source=DBName;Initial Catalog=someCatalog2;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" /><br>
      </connectionStrings><br>
</configuration>