web-dev-qa-db-ja.com

Visual Studio 2013のEF6を使用したMySQLコネクタ

C#.NET web MVCアプリケーションを介してMySQLに接続しようとしています。

私の問題は、MySQL接続に基づいてデータベースから生成されたADO.NETエンティティデータモデルを追加しようとすると、次のエラーメッセージが表示されることです。

プロジェクトは、Entity Frameworkの最新バージョンを参照しています。ただし、このバージョンと互換性のあるEntity Frameworkデータベースプロバイダーがデータ接続用に見つかりませんでした。このアクションを実行する前に、このウィザードを終了し、互換性のあるプロバイダーをインストールし、プロジェクトを再構築します

次のソフトウェア、アップグレード、アドオンを実行しています。

  • Visual Studio 2013
  • MySQLサーバーv5.6.21
  • MySQL For Visual Studio v1.2.3
  • Connector/NET v6.9.4

NuGetパッケージ:

  • EntityFramework v6.1.1
  • MySQL.Data v6.9.3
  • MySQL.Data.Entities v6.8.3.0
  • SQL.Web v6.9.3

私の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またはその他の必要なプログラム。

誰かが私が間違っていることを見つけることができますか?

21
Eax

基本的な解決策は、MySQLとVisualStudioを再インストールすることですを含む Entityおよび.NET。

何らかの理由で、インストールプロセスによってDLLが破損する理由は定かではありません。少なくとも、それが私や他の同僚の経験です。私たちの解決策は、上記のすべてを無駄にすることです。そのため、最終的には再インストールを試みましたが、うまくいきました。だからそれを試してください:)

8
Lars Nielsen

同じ問題がありました。インストール後:

  • Visual Studio 2013コミュニティエディション
  • MySQL for Visual Studio 1.2.3
  • MySQL Connector .NET 6.9.5

Visual Studioを再インストールしたくなかったので、いくつかのテストの後、フォルダー「C:\ Program Files(x86)\ Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies "には古い次のファイルのバージョン:

  • MySql.Data.dll
  • MySql.Data.Entity.EF6.dll
  • MySql.Web.dll

Visual Studioを閉じた後、これらのファイルを「C:\ Program Files(x86)\ MySQL\MySQL Connector Net 6.9.5\Assemblies\v4.5」のファイルに置き換えて、動作するようになりました!

注:上記のサブフォルダー名の6.9.5を、システムにインストールされている実際のバージョンに置き換えます。

23
Alix

これは、Visual Studioなどを再インストールすることなく機能しました。

  • インストール済み最新のMySQL Visual StudioプラグインとMySQLコネクタネット
  • 削除 App.configまたはWeb.configのentityFrameworkタグとそのすべての子タグ。
  • replaced it with the following code:
<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>
  • 追加済み MySql.Data.dll、MySql.Data.Entity.EF6.dll、およびMySql.Web.dll(WPFアプリでない場合)プロジェクトへの参照。
  • rebuiltプロジェクトを作成し、ado.netモデルを追加しました。

[〜#〜] note [〜#〜]:必ず削除してくださいentityFrameworkタグとその子のみを使用し、上で切り取ったものと置き換えます。 「余分な」タグを削除すると、プロジェクトでさらに大きな問題が発生する可能性があります。 X)

18

同じ問題が発生しました。幸いなことに、私はそれを修正しました。 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をインストールし、問題を修正したことです。

3
Chi

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を再度追加する前に。

3

今、これは私自身が抱えていた問題ではありませんが、次の可能な解決策を見つけました:

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

ここで気づいたのは、「MySql.ConnectorNET.Entity」と「MySql.ConnectorNet.Data」に言及していない2つの追加パッケージがあることです。これらが欠落している可能性があり、Entity Framework 6.1.1を使用するために必要です

(ソース: エンティティフレームワークプロバイダーが見つかりません

1
Pheonyx

MysqlデータベースでEntityFrameworkを使用する必要がある場合は、パッケージマネージャーコンソールでv 5.0などの古いバージョンのEntityFrameworkをインストールするだけです。 Install-Package EntityFramework -Version 5.0.0を作成します。楽しい。 https://www.nuget.org/packages/EntityFramework/5.0.

1

Visual Studio 2013コミュニティを使用していました。 MySQL dbでCode Firstを実行したかった。 「プロジェクトはEntity Frameworkの最新バージョンを参照しています。」という同じ問題を抱えていました。私の問題を解決したのは、以下に示す簡単な手順でした。

  1. プロジェクトを追加した後、インストールパッケージEntityFrameworkにより、nugetコンソールを使用してEntityFramework6.1.3を追加します。
  2. MySQL.Data.EntityによるMySQL参照を追加するユーザーコンソール
  3. 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>
    
  4. この時点で、必ずプロジェクトを再構築してください。 (それは絶対必要です)

  5. ここでADO Entity Modelsを追加し、MySQLを選択すると動作します。

ちなみに私が使用するプラグインはM4VS 1.2.3とMySQL .NET Connector 6.9.7です。

0
skillworks

簡単に言うと、MySQL.dll(など)を参照するためにNugetを使用していましたが、自動的に.net 4.0 dllを参照していました。参照を4.5に変更しただけで機能しました。

0
Tod

nugetコマンドラインで行う

update-package -reinstall -ignoreDependencies

そして、この作品または私にソリューションを再構築します

0
Artem Hohryakov

まず、1.2.3を再インストールし、次の参照をプロジェクトに追加するか、バージョンを確認します。

MySql.Data.dll

MySql.Data.Entity.EF6.dll

MySql.Web.dll

App.configまたはWeb.configでデフォルトのentityFrameworkタグを削除するプロジェクトをリビルドします。ADO.NETEntity Data Modelを追加できます

0
caras

解決策は、データモデルを追加/変更しようとしているプロジェクトの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>

コネクタに応じてバージョンを変更します。

0
Bart Calixto

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)をプロジェクトに追加しました。

最新バージョンではありませんが、これが役立つことを願っています。

0
iag

2018年にはまだ問題があります...

DBファーストシナリオ:Visual Studio 2017 Community Editionの場合、動作する組み合わせが見つかりました:

  • MySQL for Visual Studio 1.2.8
  • MySQL Connector .NET 6.9.9
  • EntityFramework 5.0.0(私はv6.xのさまざまな組み合わせを試してみましたが、うまくいきませんでした)

Code-Firstシナリオは、公式ドキュメント https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html を使用して、最新のConnector v.8.0で実行できます。 11およびEF6。

0
miha

これを追加して解決しました:

 <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>
0
gajus