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.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
最後の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>
気にしないで。 EF 6がインストールされていることに気付きました。私はそれを削除し、代わりにEF 5(NuGetが最新の安定バージョンであると言っています)を試してみました。
それでも、もっと便利なエラーメッセージはナイスだったでしょう!
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にあります。試してみてください!
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に感謝します。
MySQL、ADO.NET(Database First)、EF6を使用してVisual Studio Professional 2017環境を構成しようとしたときに、同じ状況が発生しました。
利用可能なすべてのコネクタ/ NETで地獄を通過した後、Connector/NET v6.9.10で動作するようにし、以下の手順に従いました。
「Connector/NET」および「MySQL for Visual Studio」がインストールされている場合はアンインストール/削除します。
「MySQL for Visual Studio」v2.0.5 CTPをインストールします( MySQL for Visual Studio )。注:Connector/NETの前にMySQLをVisual Studioにインストールします。
「Connector/NET」v6.9.10( Connector/Net )をインストールします。 https://i.stack.imgur.com/XOT1I.jpg 注:Connector/NET v6.8、v6.10、v8を最初に使用してみましたが、いずれも機能しませんでした ここでは、すべてのコネクタバージョンとVisual Studio IDEとの互換性 を見つけることができますが、これまでのところこのリストは不正確です。
NuEntityから「EntityFramework」v6.2.0をダウンロードしてインストールします。
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
への参照を追加します。
次のように、エンティティフレームワークプロバイダーの下のApp.config内にMySQL EF6プロバイダー情報を追加します。
<entityFramework>
<providers>
<provider invariantName="MySql.Data.MySqlClient"
type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
そしてそれはそれでした。 VS2017は私に行く準備ができていました。今日のように、これがすべての人に役立つことを願っています。
参照:
バージョンの要約を追加するだけです(6.2を試しているのを見たので、これは古すぎます)
EntityFramework 5.0から6.1およびMySQLコネクター6.8.3に更新しましたが、属性を追加するだけで作業を再開できます。属性を追加する前に、すべてが正常にコンパイルされますが、実行時にクラッシュします。
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class DemoContext : DbContext{}
私の場合、それは欠落している参照でした。 EntityFramework 6にアップグレードする場合、アセンブリへの参照を追加する必要があります
System.Data.Entity
MySql.Data.Entity.EF6がこのアセンブリの多くの要素を継承しているためだと思いますが、それは以前のバージョンのEFではそうではなかったからです。
App.configが適切で、すべての参照が正常に見える場合、確認する価値のあるソリューションです。
将来の参考のために、必要なすべての手順(アセンブリ、構成など)を含むEF 6でのMySQL Connector/Netの使用に関する公式ガイドを次に示します。 第10章EF 6サポート
Nugetから最新バージョンをインストールします https://www.nuget.org/packages/MySql.Data.Entity/
構成文字列とセットアップのすべての異なる組み合わせを試しましたが、最終的にそれを見つけました。私のソリューションには、あるプロジェクトにソースコードがあり、別のプロジェクトにテストがあります。 Entity Framework 6.1.1を使用していて、MySql Connector 6.8.3およびMySql for Visual Studio 1.2.3をインストールしていました。
問題は、NuGetでパッケージを管理しているのに、メインプロジェクトにしかパッケージが含まれていないことです。解決策は
Machine-configにMySqlプロバイダーのみがインストールされる場合があります(例:.netコネクタインストーラー?また、デフォルトの接続ファクトリーは、「MySql.Data.MySqlClient.MySqlClientFactory、MySql.Data、Version = 6.7.4.0、Culture = neutral、 PublicKeyToken = c5687fc88969c44d "推測します...