VSIX с EF: в файле конфигурации приложения не найдена строка подключения с именем 'X' - PullRequest
0 голосов
/ 21 января 2019

Я создаю расширение VS, в котором некоторые настройки хранятся в базе данных.Во время выполнения, как только достигается запрос LINQ, приложение выдает ошибку: «В файле конфигурации приложения не найдена строка подключения с именем« MercuryEntities ».»

Решение состоит из двух проектов: классабиблиотека (где находится файл edmx) и проект VSIX, который ссылается на библиотеку классов.Расширение открывает Winform, который должен подключиться к БД для загрузки.У меня есть App.config, определенный в обоих проектах, которые имеют строку подключения с именем «MercuryEntities».Он все еще находится в начальной стадии разработки, поэтому я просто подключаюсь к 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>

App.config VSIX:

<?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")
    {
    }

Я искал несколько форумов и ничего не нашел относительно EF с проектами VSIX.Большинство ответов подразумевают, что основное приложение имеет копию строки подключения.

Есть идеи, почему это может происходить?

...