web-dev-qa-db-ja.com

エンティティフレームワーク6にMySQL接続を使用できません

MySQLでエンティティフレームワーク6を使用しようとしています。

Visual Studio 1.1.1およびMySQL .Netコネクタ6.8.3用のMySQLプラグインをインストールしました。

問題は、新しいADO.NETエンティティモデルを作成しようとすると、接続にMySQLを選択できないことです。

enter image description here

しかし、Visual Studioの接続ツールから接続を作成すると、MySQLが表示されます

enter image description here

これは、現在インストールされているバージョンがエンティティフレームワーク6と互換性がないことを意味します。その後、最新のコネクタとプラグインをインストールするとどうなりますか。他に何かすることはありますか?

ありがとうございました

[〜#〜] edit [〜#〜]

デフォルトのコネクタをインストールせずにMySQLを新規インストールし、次に6.8.3とVisual Studioのプラグインをインストールしました。

エンティティモデル用に作成した接続を確認できますが、エンティティバージョンを選択しようとすると、このメッセージが表示されます。

enter image description here

54
Marc

最新編集

バグは修正されました。

クリスのコメント:

2015-11-07になりました。ファイルを編集したり、奇妙なことをしたりすることなく、すべてを機能させることができます。 MySQL for Windowsインストーラーを使用し、Visual Studioサポートと最新のConnector.Netを含めます。インストール後に必ず更新してください。それぞれの最新版(1.2.5および6.9.8)が取得されます。 NuGetを使用して、EntityFramework、MySql.Data、およびMySql.Data.Entityをインストールします。最後に、Ado.Netエンティティモデルを追加することにより、コードファーストリバースエンジニアリングの良さを構築してお楽しみください。

元の答え

MySQLのバグであることがわかりました。

こちら 回避策を説明するリンク。

VS 2013がインストールされているマシンで、VSプラグイン(1.1.3 GA)およびConnector/Net

手順を実行する前に、すべてのVSインスタンスを閉じます。

Windowsエクスプローラーウィンドウで、このパスに移動するか、Connector/netバイナリをインストールした場所に移動します。

C:\ Program Files(x86)\ MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5 \

ファイルをコピーします。

MySql.Data.Entity.EF6.dll

そして、このフォルダーに貼り付けます

C:\ Program Files(x86)\ Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies

上書きするよう求められた場合は、上書きしてください。

ファイルを上書きするには管理者権限が必要です。

その後、モデルのスクリプトの生成を再試行できます。

この回避策はそのためのものであるため、VSプラグインの1.1.3バージョンがインストールされていることが重要です。

残念ながら、それは私にとっては機能しないので、エンティティフレームワーク5にダウングレードしました。

[〜#〜] edit [〜#〜]

最後に、これで動作します。

次の3つのDLLを追加する必要がありました。

  • C:\ Program Files(x86)\ MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5\MySql.Data.dll
  • C:\ Program Files(x86)\ MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5\MySql.Data.Entity.EF6.dll
  • C:\ Program Files(x86)\ MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5\MySql.Web.dll

次に、Web設定のEntityFrameworkパーツを次のように変更しました。

<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> 
    </providers>
  </entityFramework>

[〜#〜] rebuild [〜#〜]を忘れないでください。MySQLでエンティティフレームワーク6モデルを作成できるはずです。

[〜#〜] important [〜#〜]

Visual Studio1.1.3およびMySQLコネクタ.net6.8.3

54
Marc

解決! 2017年

Nugetパッケージをインストールします。

Install-Package EntityFramework
Install-Package MySql.Data.Entity -Version 6.9.9

Visual Studio 1.2.6用のMySQLをインストールします- https://dev.mysql.com/downloads/windows/visualstudio/

Web.Configの変更

<EntityFramework>

に:

<EntityFramework codeConfigurationType = "MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">

追加(**あなたの情報**):

<connectionStrings>
<add name="**YourContextName**" connectionString="server=**xxx.xxx.xxx.xxx**;port=3306;user id=**your user**;password=**your password**;database=**your database**" providerName="MySql.Data.MySqlClient" /></connectionStrings>


Visual Studioを再起動します

私の設定:
-Microsoft Visual Studio Community 2015
-Dot Net Framework 4.5.2
-Asp.Net MVC 5.2.3.0
-MySql Server 5.6

10
Edvaldo Silva

これがまだあなたにとって問題であるかどうかはわかりませんが、上記の解決策のどれも私にとってはうまくいきませんでした...これを見つけるまで:

http://www.Microsoft.com/en-us/download/details.aspx?id=40762

(VS2013とVS2012の両方に)パッチを適用した後、EF6 for MySqlでVS2013が素晴らしく動作するようになりました。

追伸インストールされているパッケージバージョン(NuGetから):
EntityFramework-6.1.3(2015年3月10日)
MySqlData-6.9.6(2015年2月24日)
MySql.Data.Entity-6.9.6(2015年2月24日)
MySql.Web-6.9.6(2015年2月24日)

NuGetは適切に仕事をし、それに応じてWeb.Configを更新し、「entityFramework」セクションを必要なもので満たします。

VS2013の場合、単に「まったく機能しない」から「完全に機能する」に移行します。 VS2012では、パッチを適用する前は利用できなかった「Code First from Database」を使用できます。

私はこれを約10日前に見つけていたらよかったのに、これがまだ助けになることを願っています。

6
awerdan

私にとっては、MySQLを再インストールし、インストールされたコネクタバージョンをVisual Studioのリファレンスとして使用するとうまくいきました!

手順:

  1. Windows用の最新の安定したMySQLコネクタでMySQLツールを再インストールします。
  2. この3つのファイルをVisual Studioの参照として追加します。

  3. MySql.Data.dll

  4. MySql.Data.Entity.EF6.dll
  5. MySql.Web.dll

  6. 次のWeb.configを変更します

      <providers>
        <provider invariantName="System.Data.SqlClient"  type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
     </providers>
    

に:

 <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" />
</providers>

接続ユーザー名/パスワード/ db名が正しいことを確認してください。そうでない場合、Visual Studioがクラッシュする可能性があります。 (私と一緒に起こった。)

2
Shyamal Parikh

以下のようなMySql EF6プロバイダーの検索/ロードの問題のためにGUIプロジェクトを実行できない場合、マルチプロジェクトソリューションを使用しているすべての人のFYI

不変名「MySql.Data。(...)」を持つADO.NETプロバイダーのEntity Frameworkプロバイダーが見つかりません。プロバイダーがアプリケーション構成ファイルの「entityFramework」セクションに登録されていることを確認してください。詳細については、 http://go.Microsoft.com/fwlink/?LinkId=260882 を参照してください。

この質問 を参照してください。

SqlServerについてですが、問題は同じかもしれません。プロジェクトの1つだけがDB操作を処理する場合、おそらく、MySql.DataおよびMySql.Data.EntityおよびEntityFrameworkにNuget Referencesを追加したでしょう。事業。 MySql.DataEntityFrameworkはコードによって直接使用されるため、ビルドプロセスはそれらを出力フォルダーにコピーし、GUIプロジェクトの出力フォルダーにも2回コピーするのに十分スマートです。

ただし、MySql.Data.Entityapp.configまたはweb.configテキストファイルのみによって参照されるため、ビルドプロセスはこの参照が不要であると見なします(コードはそれを使用しません!)そしてそれを取り除き、GUIプロジェクト出力ディレクトリにMySql.Data.Entity.EF6.dllが表示されず、これによりGUIプロジェクトがそのプロバイダーを見つけることができません。

だから-2つのオプション-何かがビルドプロセスの一部としてそこにDLL)をコピーすることを確実にする(すなわち、ビルドイベントの前後に、デプロイメントパッケージビルダー、CIタスク、ヒューマンタスク、その他) DB/EF6プロジェクトのアセンブリを直接参照します。

0
quetzalcoatl

2015-11-07アップデート

バグが修正され、ファイルを編集したり、NuGetの外部のアセンブリを参照したりすることなく、すべてのバグを機能させることができます。適切なものをインストールし、適切なNuGetパッケージを追加するだけです。方法は次のとおりです。

MySQL for Windowsインストーラーを使用し、Visual Studioサポートと最新のConnector.Netを含めます。インストール後に必ず更新してください。それぞれの最新版(1.2.5および6.9.8)が取得されます。

次に、NuGetを使用してEntityFramework、MySql.Data、およびMySql.Data.Entityをインストールします。

最後に、Ado.Netエンティティモデルを追加して、コードファーストリバースエンジニアリングの良さを構築してお楽しみください。

0
Chris

私のSQLに最新のドットネットコネクタをインストールしようとしましたか? http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html または http://dev.mysql.com/downloads/connector/net / コンテキストに応じて。

0

私は同じ問題に直面していました。

私は次のことをしました:
1。次からVisual Studio用のMySQLをインストールします。
https://dev.mysql.com/downloads/windows/visualstudio/
2。プロジェクトにMySql.Dataをインストールする
3。プロジェクトにMySql.Data.EntityFrameworkをインストールします

0
Geovanny López

mySQL Bucktracker でこれを見つけました

次の回避策を試してください。

MySQL DBで次のコマンドを実行し、これが機能する場合は試してください。

グローバルなoptimizer_switch = 'derived_merge = off'を設定します

また、次のアセンブリも追加しました。

  • NugetパッケージとしてのEF6
  • MySQL.Data
  • MySql.Data.Entity.EF6.dll
  • MySQL.Web(本当に必要かどうかわからない)
0
Hans Vader