1

我有两个与同一个数据库交互的 exe。一个是主应用程序,另一个是更新程序应用程序(更新主应用程序)。我试图将安装包限制在一个配置文件中。IE 我希望更新程序应用程序使用主应用程序配置文件。

我能够像这样提取连接字符串并创建数据库上下文:

string entityConnectionString = (entitySettings == null) ? "" : entitySettings.ConnectionString;
var ecb = new EntityConnectionStringBuilder(entityConnectionString);
var ec = new EntityConnection(ecb.ToString());

但是,如果我不包括下面的更新程序应用程序的配置,我会收到错误The specified store provider cannot be found in the configuration, or is not valid.

<system.data>
  <DbProviderFactories>
    <remove invariant="System.Data.SqlServerCe.4.0"/>
    <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
  </DbProviderFactories>
</system.data>

如何告诉 Entity Framework 或应用程序使用其他配置文件或绕过此错误消息?为更新程序 exe 添加配置文件不是一种选择,因为老板想要一个配置文件。(我们希望能够远程更新配置文件并添加多个使其更加复杂。)

4

2 回答 2

1

您可以允许多个项目共享相同的内容app.config,如下所示:

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"C:\Shared\app.config");
于 2013-10-04T22:28:52.167 回答
0

我最终使用了这个答案:

添加没有 App.Config 的 DbProviderFactory

通过从主 exe.config 中提取数据并将值插入。

于 2013-10-07T16:38:33.890 回答