Подтвердить что ты не робот

Entity Framework: исключение исключений из непризнанного элемента

Я получаю исключение Unrecognized element 'providers во время выполнения, когда я использую Entity Framework 5.0.0 с .NET 4.0. На самом деле с .NET 4.0 это версия 4.4.0 Entity Framework, загружаемая, когда я устанавливаю пакет с NuGet. Когда я проверяю свойства файла из проводника, я вижу это:

enter image description here

Вот мой файл конфигурации

 <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
  <connectionStrings>
    <add name="xxx" connectionString="metadata=res://*/StreetMusicModel.csdl|res://*/StreetMusicModel.ssdl|res://*/StreetMusicModel.msl;         provider=MySql.Data.MySqlClient;provider connection string='         server=xxx.net;         user id=xxx;         password=xxx;         database=xxx'" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v12.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity" />
    </providers>
  </entityFramework>

Я чувствую, что Entity Framework 4.4.0 не может распознать тег. Можно ли просто удалить или переименовать раздел? Когда я удаляю раздел, я получаю еще одно исключение: Недопустимый базовый поставщик при открытии.

4b9b3361

Ответ 1

У меня была эта проблема после понижения EF с версии 6 до версии 5.0.0 с использованием Nuget. Я думаю, что проблема заключается в том, что конфигурация поставщиков добавляется при добавлении EF v6, но не удаляется после понижения. Таким образом, вы можете просто удалить содержимое в тегах <providers> и самих тегах, и оно будет работать нормально:

<entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
    <parameters>
      <parameter value="v12.0" />
    </parameters>
  </defaultConnectionFactory>
</entityFramework>

Ответ 2

Вам нужно удалить тег из файла проекта app.config, а не из файла YourProjectName.dll.config, поскольку он автоматически удалит его из файла YourProjectName.dll.config после создания вашего проекта.

Примечание. Ответ найден в приведенном выше комментарии. Я только что собрал здесь ответ.