Entity Framework 5.0.0を.NET 4.0で使用すると、実行時にnrecognized element 'providers'例外が発生します。実際に.NET 4.0では、NuGetでインストールパッケージを実行したときに読み込まれるEntity Frameworkのバージョン4.4.0です。エクスプローラーからファイルのプロパティを確認すると、次のように表示されます。
これが私の設定ファイルです
<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はタグを認識できないと感じています。セクションを削除したり名前を変更したりできますか?セクションを削除すると、別の例外基になるプロバイダーがOpenで失敗しましたが発生します。
Nugetを使用してEFをバージョン6からバージョン5.0.0にダウングレードした後、この問題が発生しました。問題は、EF v6を追加するときにプロバイダー構成が追加されるが、ダウングレード後に削除されないことだと思います。したがって、<providers>
タグ内のコンテンツとタグ自体を削除するだけで、正常に機能します。
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v12.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
タグは、プロジェクトのビルド後にYourProjectName.dll.configから自動的に削除されるため、YourProjectName.dll.configファイルからではなく、プロジェクトのapp.configファイルから削除する必要があります。
注:答えは上記のコメント自体にあります。ここで答えをまとめました。