当运行一个应用的多个实例时,处理app.config连接字符串
本文关键字:处理 app 实例 连接 config 字符串 运行 一个 应用 | 更新日期: 2023-09-27 18:05:04
通常,在。net应用程序中,您将数据库连接字符串存储在app.config中。
对于一个。exe,有一个。exe.config。我们正在使用实体框架,它默认使用与DbContext名称匹配的.config设置。这一切都工作得很好,只要您遵循一个通用模式,让一个应用程序的一个实例与一个数据库通信。
但是我们的问题要求我们的应用程序有多个实例,每个实例都有自己不同的数据库连接。
可能的解决方案:
- 创建。exe的多个副本,每个副本都有自己的。config副本,并在每个副本中放置不同的连接字符串。优势吗?没有编码变化。缺点呢?维护所有不同的副本,确保它们都得到更新等。
- 保留。exe的一个副本,与。config的一个副本,并在。config中放置多个连接字符串。然后向程序传递一个命令行参数,该参数选择要使用的连接字符串。优势吗?只有一个。exe要管理。缺点呢?代码更改,可能有人会弄乱命令行参数。
- 另一个绝妙的想法,有人会在Stack Overflow上给我指出来。
任何想法?
我相信人们以前处理过这个问题。有一个共同的方法来处理这个问题吗?
您也可以考虑创建配置文件的副本,并使用以下代码根据命令行参数加载适当的配置文件:
AppDomain.CurrentDomain.SetData ("APP_CONFIG_FILE", "path to config file")
将app.config文件重定位到自定义路径
您可以在一些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");