web-dev-qa-db-ja.com

'MySql.Data.MySqlClient' ADO.NETプロバイダーのEntity Frameworkプロバイダーが見つかりません

MySQLでEntity Frameworkを使用しようとしていますが、上記のエラーが発生します。最新の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.DataDbProviderFactoriesこのようなセクション:

<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最後の1つは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>
32
Matt Burland

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

それでも、もっと便利なエラーメッセージはナイスだったでしょう!

0
Matt Burland

eF5以下では、すべてOKです。 EF6では、mysqlコネクター6.8.xを使用し、DbConfigurationTypeAttributeをDbContextに追加する必要があります。

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class DemoContext : DbContext{}

どのMySqlEFConfigurationは6.8.xのMySql.Data.Entity.EF6.dllにあります。試してみてください!

33
AlexanderYao

Config(EF 5)でこのセクションを作成する必要があります。

<entityFramework>
  <!-- ... -->
  <providers>
    <provider invariantName="MySql.Data.MySqlClient"
              type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity" />
  </providers>
</entityFramework>

更新: EF 6には次の定義を使用します。

<entityFramework>
  <!-- ... -->
  <providers>
    <provider invariantName="MySql.Data.MySqlClient"
              type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
  </providers>
</entityFramework>

elcoolに感謝します。

28
Der_Meister

MySQL、ADO.NET(Database First)、EF6を使用してVisual Studio Professional 2017環境を構成しようとしたときに、同じ状況が発生しました。

利用可能なすべてのコネクタ/ NETで地獄を通過した後、Connector/NET v6.9.10で動作するようにし、以下の手順に従いました。

  1. 「Connector/NET」および「MySQL for Visual Studio」がインストールされている場合はアンインストール/削除します。

  2. 「MySQL for Visual Studio」v2.0.5 CTPをインストールします( MySQL for Visual Studio )。注:Connector/NETの前にMySQLをVisual Studioにインストールします。

  3. 「Connector/NET」v6.9.10( Connector/Net )をインストールします。 https://i.stack.imgur.com/XOT1I.jpg 注:Connector/NET v6.8、v6.10、v8を最初に使用してみましたが、いずれも機能しませんでした ここでは、すべてのコネクタバージョンとVisual Studio IDEとの互換性 を見つけることができますが、これまでのところこのリストは不正確です。

  4. NuEntityから「EntityFramework」v6.2.0をダウンロードしてインストールします。

  5. C:\Program Files (x86)\MySQL\Connector.NET 6.9.10\Assemblies\v4.5\MySql.Data.dllおよびC:\Program Files (x86)\MySQL\Connector.NET 6.9.10\Assemblies\v4.5\MySql.Data.Entity.EF6.dllへの参照を追加します。

  6. 次のように、エンティティフレームワークプロバイダーの下のApp.config内にMySQL EF6プロバイダー情報を追加します。

<entityFramework>
       <providers>
         <provider invariantName="MySql.Data.MySqlClient"
              type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
       </providers>
</entityFramework>
  1. プロジェクトを再構築します。

そしてそれはそれでした。 VS2017は私に行く準備ができていました。今日のように、これがすべての人に役立つことを願っています。

参照

  1. エンティティデータモデルを作成できません-MySqlとEF6を使用

  2. 'MySql.Data.MySqlClient' ADO.NETプロバイダーのEntity Frameworkプロバイダーが見つかりません

6

バージョンの要約を追加するだけです(6.2を試しているのを見たので、これは古すぎます)

  • EF4の場合、Connector/NET 6.6.xを使用します(現在のGAは6.6.6)
  • EF5の場合、Connector/NET 6.7.x(current GA is 6.7.4)またはConnector/NET 6.8.x(current GA is 6.8.3 )。
  • EF6の場合、Connector/NET 6.8.xを使用します(現在のGAは6.8.3です)。

EntityFramework 5.0から6.1およびMySQLコネクター6.8.3に更新しましたが、属性を追加するだけで作業を再開できます。属性を追加する前に、すべてが正常にコンパイルされますが、実行時にクラッシュします。

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class DemoContext : DbContext{}
4
Ken

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

System.Data.Entity

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

App.configが適切で、すべての参照が正常に見える場合、確認する価値のあるソリューションです。

1
Mickael V.

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

1
Moayad Mardini

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

1
Emanuele

構成文字列とセットアップのすべての異なる組み合わせを試しましたが、最終的にそれを見つけました。私のソリューションには、あるプロジェクトにソースコードがあり、別のプロジェクトにテストがあります。 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. すべてのプロジェクトの各パッケージを有効にします。
1
Gaʀʀʏ

Machine-configにMySqlプロバイダーのみがインストールされる場合があります(例:.netコネクタインストーラー?また、デフォルトの接続ファクトリーは、「MySql.Data.MySqlClient.MySqlClientFactory、MySql.Data、Version = 6.7.4.0、Culture = neutral、 PublicKeyToken = c5687fc88969c44d "推測します...

0