实体框架 - 使用另一个exe的配置文件

时间:2013-10-04 21:55:50

标签: c# winforms entity-framework sql-server-ce

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

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

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或应用程序使用其他配置文件或绕过此错误消息?添加updater exe的配置文件不是一个选项,因为boss人想要一个配置文件。 (我们希望能够远程更新配置文件,并添加多个使其更复杂。)

2 个答案:

答案 0 :(得分:1)

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

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"C:\Shared\app.config");

答案 1 :(得分:0)

我最终使用了这个答案:

Add a DbProviderFactory without an App.Config

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