处理 app.config 个连接字符串,当 运行 个应用实例时
Handling app.config connection strings, when running multiple instances of an app
通常,在 .NET 应用程序中,您将数据库连接字符串存储在 app.config。
对于单个 .exe,有一个 .exe.config。我们正在使用 Entity Framework,它默认使用与 DbContext 名称匹配的 .config 设置。这一切都很好,只要您遵循让应用程序的单个实例与单个数据库通信的常见模式。
但是我们的问题要求我们有多个应用程序实例,每个实例都有自己独特的数据库连接。
可能的解决方案:
- 创建 .exe 的多个副本,每个副本都有自己的 .config 副本,并在每个副本中放入不同的连接字符串。优势?没有编码变化。坏处?维护所有不同的副本,确保它们都得到更新,等等。
- 保留一份 .exe,一份 .config,并在 .config 中放置多个连接字符串。然后将命令行参数传递给选择要使用的连接字符串的程序。优势?只需一个 .exe 即可管理。坏处?编码更改,有人可能会弄乱命令行参数。
- Stack Overflow 上有人会向我指出一些其他绝妙的想法。
有什么想法吗?
我相信人们以前处理过这个问题。是否有处理问题的通用方法?
您可以在某些 C# 应用程序中尝试类似的操作来更改每个应用程序的连接字符串。
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var connectionStringSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
connectionStringSection.ConnectionStrings["database"].ConnectionString = string.Format("Data Source={0}", userCon);
config.Save();
ConfigurationManager.RefreshSection("connectionStrings");
您还可以考虑创建配置文件的副本,并使用以下代码根据命令行参数加载适当的副本:
AppDomain.CurrentDomain.SetData ("APP_CONFIG_FILE", "path to config file")
查看详情:Relocating app.config file to a custom path
通常,在 .NET 应用程序中,您将数据库连接字符串存储在 app.config。
对于单个 .exe,有一个 .exe.config。我们正在使用 Entity Framework,它默认使用与 DbContext 名称匹配的 .config 设置。这一切都很好,只要您遵循让应用程序的单个实例与单个数据库通信的常见模式。
但是我们的问题要求我们有多个应用程序实例,每个实例都有自己独特的数据库连接。
可能的解决方案:
- 创建 .exe 的多个副本,每个副本都有自己的 .config 副本,并在每个副本中放入不同的连接字符串。优势?没有编码变化。坏处?维护所有不同的副本,确保它们都得到更新,等等。
- 保留一份 .exe,一份 .config,并在 .config 中放置多个连接字符串。然后将命令行参数传递给选择要使用的连接字符串的程序。优势?只需一个 .exe 即可管理。坏处?编码更改,有人可能会弄乱命令行参数。
- Stack Overflow 上有人会向我指出一些其他绝妙的想法。
有什么想法吗?
我相信人们以前处理过这个问题。是否有处理问题的通用方法?
您可以在某些 C# 应用程序中尝试类似的操作来更改每个应用程序的连接字符串。
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var connectionStringSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
connectionStringSection.ConnectionStrings["database"].ConnectionString = string.Format("Data Source={0}", userCon);
config.Save();
ConfigurationManager.RefreshSection("connectionStrings");
您还可以考虑创建配置文件的副本,并使用以下代码根据命令行参数加载适当的副本:
AppDomain.CurrentDomain.SetData ("APP_CONFIG_FILE", "path to config file")
查看详情:Relocating app.config file to a custom path