在运行应用程序的多个实例

时间:2015-07-28 13:59:13

标签: c# .net entity-framework app-config

通常,在.NET应用程序中,您将数据库连接字符串存储在app.config中。

对于单个.exe,只有一个.exe.config。我们正在使用Entity Framework,它默认使用与DbContext名称匹配的.config设置。只要您遵循将单个数据库实例与单个数据库进行通信的常见模式,这一切都可以正常工作。

但是我们的问题要求我们有多个应用程序实例,每个实例都有自己独特的数据库连接。

可能的解决方案:

  1. 创建.exe的多个副本,每个副本都有自己的.config副本,并在每个副本中放置一个不同的连接字符串。优点?没有编码变化。坏处?维护所有不同的副本,确保它们都得到更新,等等。
  2. 保留.exe的一个副本,其中包含.config的一个副本,并在.config中放置多个连接字符串。然后将命令行参数传递给程序,该程序选择要使用的连接字符串。优点?只需要一个.exe来管理。坏处?编码更改,某人可能会搞乱命令行参数。
  3. 其他一些好主意,Stack Overflow上有人会指出我。
  4. 有什么想法吗?

    我确定以前有人处理过这个问题。是否有一种处理问题的常用方法?

2 个答案:

答案 0 :(得分:2)

您还可以考虑创建配置文件的副本,并使用以下代码根据命令行参数加载相应的配置文件:

AppDomain.CurrentDomain.SetData ("APP_CONFIG_FILE", "path to config file")

详情请见Relocating app.config file to a custom path

答案 1 :(得分:0)

您可以在某些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");