带有EF的VSIX:在应用程序配置文件中找不到名为“ X”的连接字符串

时间:2019-01-21 19:54:49

标签: entity-framework-6 connection-string app-config vsix

我正在创建VS扩展,其中某些设置存储在数据库中。在运行时,一旦达到LINQ查询,应用程序就会引发错误:“在应用程序配置文件中找不到名为'MercuryEntities'的连接字符串。”

该解决方案由两个项目组成:一个类库(edmx文件所在的位置)和引用该类库的VSIX项目。该扩展程序打开一个Winform,该Winform需要连接到数据库才能加载。我在两个项目中都有一个名为“ MercuryEntities”的连接字符串定义了一个App.config。它仍处于开发的开始阶段,因此我只是连接到localhost。建立模型就可以了。

类库的App.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
  <add name="MercuryEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost;initial catalog=Mercury;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>

VSIX的App.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <connectionStrings>
    <add name="MercuryEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost;initial catalog=Mercury;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

数据库上下文构造函数:

    public MercuryEntities()
        : base("name=MercuryEntities")
    {
    }

我搜索了多个论坛,但没有找到有关VSIX项目中EF的任何信息。大多数答案包括确保主应用程序具有连接字符串的副本。

关于为什么会发生这种情况的任何想法?

0 个答案:

没有答案