C#.NET web MVCアプリケーションを介してMySQLに接続しようとしています。
私の問題は、MySQL接続に基づいてデータベースから生成されたADO.NETエンティティデータモデルを追加しようとすると、次のエラーメッセージが表示されることです。
プロジェクトは、Entity Frameworkの最新バージョンを参照しています。ただし、このバージョンと互換性のあるEntity Frameworkデータベースプロバイダーがデータ接続用に見つかりませんでした。このアクションを実行する前に、このウィザードを終了し、互換性のあるプロバイダーをインストールし、プロジェクトを再構築します
次のソフトウェア、アップグレード、アドオンを実行しています。
NuGetパッケージ:
私のweb.config、entityFrameworkブロック:
..
</system.webServer>
<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
<runtime>
..
私はここで見つけることができる他のすべてのソリューションを見ましたSOそして一般的にグーグルを通じて、それらのすべてを試してみましたが、どのソリューションもConnector /の非常に異なるバージョン用ではなかったようですNETまたはその他の必要なプログラム。
誰かが私が間違っていることを見つけることができますか?
基本的な解決策は、MySQLとVisualStudioを再インストールすることですを含む Entityおよび.NET。
何らかの理由で、インストールプロセスによってDLLが破損する理由は定かではありません。少なくとも、それが私や他の同僚の経験です。私たちの解決策は、上記のすべてを無駄にすることです。そのため、最終的には再インストールを試みましたが、うまくいきました。だからそれを試してください:)
同じ問題がありました。インストール後:
Visual Studioを再インストールしたくなかったので、いくつかのテストの後、フォルダー「C:\ Program Files(x86)\ Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies "には古い次のファイルのバージョン:
Visual Studioを閉じた後、これらのファイルを「C:\ Program Files(x86)\ MySQL\MySQL Connector Net 6.9.5\Assemblies\v4.5」のファイルに置き換えて、動作するようになりました!
注:上記のサブフォルダー名の6.9.5を、システムにインストールされている実際のバージョンに置き換えます。
これは、Visual Studioなどを再インストールすることなく機能しました。
<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
[〜#〜] note [〜#〜]:必ず削除してくださいentityFrameworkタグとその子のみを使用し、上で切り取ったものと置き換えます。 「余分な」タグを削除すると、プロジェクトでさらに大きな問題が発生する可能性があります。 X)
同じ問題が発生しました。幸いなことに、私はそれを修正しました。 MySql.Data.dllまたはMySql.Data.Entity.EF6.dllはEF 6.1アップバージョンと互換性がありません。私がしたことは、このコマンド-> install-package entityframework -version 6.0.0.0によってnugetコンソールにEFバージョン6.0.0.0をインストールし、問題を修正したことです。
Web.configに追加するだけです:
<system.data>
<DbProviderFactories>
<clear />
<add name="MySQL Data Provider"
invariant="MySql.Data.MySqlClient"
description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory,
MySql.Data" />
</DbProviderFactories>
</system.data>
ソリューションを再構築することを忘れないでくださいデータベースから生成されたADO.NET Entity Data Modelを再度追加する前に。
今、これは私自身が抱えていた問題ではありませんが、次の可能な解決策を見つけました:
ここで気づいたのは、「MySql.ConnectorNET.Entity」と「MySql.ConnectorNet.Data」に言及していない2つの追加パッケージがあることです。これらが欠落している可能性があり、Entity Framework 6.1.1を使用するために必要です
(ソース: エンティティフレームワークプロバイダーが見つかりません )
MysqlデータベースでEntityFrameworkを使用する必要がある場合は、パッケージマネージャーコンソールでv 5.0などの古いバージョンのEntityFrameworkをインストールするだけです。 Install-Package EntityFramework -Version 5.0.0を作成します。楽しい。 https://www.nuget.org/packages/EntityFramework/5.0.
Visual Studio 2013コミュニティを使用していました。 MySQL dbでCode Firstを実行したかった。 「プロジェクトはEntity Frameworkの最新バージョンを参照しています。」という同じ問題を抱えていました。私の問題を解決したのは、以下に示す簡単な手順でした。
Web.configまたはApp.configを開いて、以下に示すようにentityframeworkおよびsystem.dataセクションを変更します
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices,EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
</provider>
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<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.9.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
この時点で、必ずプロジェクトを再構築してください。 (それは絶対必要です)
ここでADO Entity Modelsを追加し、MySQLを選択すると動作します。
ちなみに私が使用するプラグインはM4VS 1.2.3とMySQL .NET Connector 6.9.7です。
簡単に言うと、MySQL.dll(など)を参照するためにNugetを使用していましたが、自動的に.net 4.0 dllを参照していました。参照を4.5に変更しただけで機能しました。
nugetコマンドラインで行う
update-package -reinstall -ignoreDependencies
そして、この作品または私にソリューションを再構築します
まず、1.2.3を再インストールし、次の参照をプロジェクトに追加するか、バージョンを確認します。
MySql.Data.dll
MySql.Data.Entity.EF6.dll
MySql.Web.dll
App.configまたはWeb.configでデフォルトのentityFrameworkタグを削除するプロジェクトをリビルドします。ADO.NETEntity Data Modelを追加できます
解決策は、データモデルを追加/変更しようとしているプロジェクトのapp.config
/web.config
にこれを追加することです。
<system.data>
<DbProviderFactories>
<clear />
<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.9.5.0,
Culture=neutral,
PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
コネクタに応じてバージョンを変更します。
MySQL Connector Librariesのバージョン6.8.3とEF6 v6.0.0で動作するプロジェクトがあります。このエラーを覚えています。app.configに手動で行を追加して解決したと思います。
EF6とMySQL設定に関連する私のapp.configの行をリストしますが、あなたのものとは異なります。
<configSections>
...
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
MySQLサイトからダウンロードしたパッケージを使用してMySQL Connector Net 6.8.3をインストールし、プロジェクトに2つの参照を追加しました:MySql.DataおよびMySql.Data.Entity.EF6、両方とも6.8.3バージョン(異なるバージョンを使用していることに気付きます)このファイルの...)。
Nugetを介してEF6(v 6.0.0)をプロジェクトに追加しました。
最新バージョンではありませんが、これが役立つことを願っています。
2018年にはまだ問題があります...
DBファーストシナリオ:Visual Studio 2017 Community Editionの場合、動作する組み合わせが見つかりました:
Code-Firstシナリオは、公式ドキュメント https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html を使用して、最新のConnector v.8.0で実行できます。 11およびEF6。
これを追加して解決しました:
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>