33

MySQLでEntityFrameworkを使用しようとしていますが、上記のエラーが発生します。最新のMySQLコネクタをインストールしています。

完全なエラーは次のとおりです。

No Entity Framework provider found for 'MySql.Data.MySqlClient' ADO.NET provider. Make sure the provider is registered in the 'entityFramework' section of the application config file.

ただし、「entityFramework」セクションに登録する方法を示唆するものは見つかりません。

他のいくつかの投稿(system.Data DbProviderFactories)は、次のようなセクションにプロバイダーを追加することを提案しています。

<DbProviderFactories>
  <add 
    name="MySQL Data Provider"
    invariant="MySql.Data.MySqlClient"
    description=".Net Framework Data Provider for MySQL"
    type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, 
    Version=6.2.3.0, Culture=neutral, 
    PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>

invariantしかし、名前が重複していると主張しているため、これは機能しません。そして、実際に繰り返してSystem.Data.Common.DbProviderFactoriesみると、最後のものがMySQLプロバイダーであることがわかります。

MySQL Data Provider
.Net Framework Data Provider for MySQL
MySql.Data.MySqlClient
MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d

したがって、プロバイダーはそこにありますが、EFはそれを使用することを拒否します。何か案は?

私の完全な設定は次のようになります:

<configuration>
    <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </configSections>

   <system.data>
   <!--<DbProviderFactories>
   <add 
    name="MySQL Data Provider"
    invariant="MySql.Data.MySqlClient"
    description=".Net Framework Data Provider for MySQL"
    type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, 
    Version=6.2.3.0, Culture=neutral, 
    PublicKeyToken=c5687fc88969c44d" />
   </DbProviderFactories>-->
</system.data>

<connectionStrings>
    <add name="myContext" connectionString="server=****;User Id=****;password=****;Persist Security Info=True;database=myDb"
  providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>

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

</entityFramework>

</configuration>
4

11 に答える 11

4

バージョンの要約を追加するだけです(私はあなたが古すぎる6.2を試しているのを見たので)

  • EF4 の場合、Connector/NET 6.6.x を使用します (現在の GA は 6.6.6 です)。
  • EF5 の場合、Connector/NET 6.7.x (現在の GA は 6.7.4) または Connector/NET 6.8.x (現在の GA は 6.8.3) を使用します。
  • EF6 の場合、Connector/NET 6.8.x を使用します (現在の GA は 6.8.3 です)。
于 2014-02-17T22:42:12.070 に答える
1

構成文字列とセットアップのさまざまな組み合わせをすべて試しましたが、最終的にそれを理解しました。私のソリューションでは、あるプロジェクトにソース コードがあり、別のプロジェクトにテストがあります。私は Entity Framework 6.1.1 を使用していて、MySql Connector 6.8.3 と MySql for Visual Studio 1.2.3 をインストールしていました。

問題は、NuGet でパッケージを管理していたことですが、それらはメイン プロジェクトにしか含まれていませんでした。解決策は

  1. ソリューション (ソリューション エクスプローラーの最上位) を右クリックします。
  2. ソリューションの Nuget パッケージを管理する
  3. [インストール済み] タブに移動します
  4. すべての EntityFramework 関連パッケージ (MySql.Data、MySql.Data.Entities、MySql.ConnectorNET.Entity、および MySql.ConnectorNET.Data) について、それらを選択し、[管理] ボタンを選択します。
  5. すべてのプロジェクトで各パッケージを有効にします。
于 2014-08-25T01:15:41.947 に答える
1

今後の参考のために、必要なすべての手順 (アセンブリ、構成など) を含む EF 6 での MySQL Connector/Net の使用に関する公式ガイドを次に示します。 第 10 章 EF 6 サポート

于 2015-01-23T11:46:24.737 に答える
1

私の場合、それは欠落した参照でした。EntityFramework 6 にアップグレードするときは、アセンブリへの参照を追加する必要があります

System.Data.Entity

MySql.Data.Entity.EF6 がこのアセンブリの多くのものを継承しているため、以前のバージョンの EF ではそうではなかったと思います。

app.config が適切で、すべての参照に問題がないように見える場合は、確認する価値のある解決策です。

于 2017-01-17T14:37:40.330 に答える
1

nuget https://www.nuget.org/packages/MySql.Data.Entity/から最新バージョンをインストールします

于 2015-08-31T14:24:06.300 に答える
0

MySql プロバイダーだけが machine-config にインストールされている可能性があります (たとえば、.net コネクタ インストーラーによってですか? また、デフォルトの接続ファクトリは、"MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" だと思います...

于 2013-07-13T13:03:05.740 に答える
0

どうでも。EF 6 がインストールされていることに気付きました。私はそれを削除し、代わりにEF 5を試しました(NuGetはこれが最新の安定バージョンであると言っています)。

それでも、もっと便利なエラー メッセージがあればよかったのに!

于 2013-02-28T20:13:03.570 に答える