MySQLでエンティティフレームワーク6を使用しようとしています。
Visual Studio 1.1.1およびMySQL .Netコネクタ6.8.3用のMySQLプラグインをインストールしました。
問題は、新しいADO.NETエンティティモデルを作成しようとすると、接続にMySQLを選択できないことです。
しかし、Visual Studioの接続ツールから接続を作成すると、MySQLが表示されます
これは、現在インストールされているバージョンがエンティティフレームワーク6と互換性がないことを意味します。その後、最新のコネクタとプラグインをインストールするとどうなりますか。他に何かすることはありますか?
ありがとうございました
[〜#〜] edit [〜#〜]
デフォルトのコネクタをインストールせずにMySQLを新規インストールし、次に6.8.3とVisual Studioのプラグインをインストールしました。
エンティティモデル用に作成した接続を確認できますが、エンティティバージョンを選択しようとすると、このメッセージが表示されます。
最新編集
バグは修正されました。
クリスのコメント:
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を追加する必要がありました。
次に、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
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
これがまだあなたにとって問題であるかどうかはわかりませんが、上記の解決策のどれも私にとってはうまくいきませんでした...これを見つけるまで:
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日前に見つけていたらよかったのに、これがまだ助けになることを願っています。
私にとっては、MySQLを再インストールし、インストールされたコネクタバージョンをVisual Studioのリファレンスとして使用するとうまくいきました!
手順:
この3つのファイルをVisual Studioの参照として追加します。
MySql.Data.dll
MySql.Web.dll
次の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がクラッシュする可能性があります。 (私と一緒に起こった。)
以下のような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.Data
とEntityFramework
はコードによって直接使用されるため、ビルドプロセスはそれらを出力フォルダーにコピーし、GUIプロジェクトの出力フォルダーにも2回コピーするのに十分スマートです。
ただし、MySql.Data.Entity
はapp.config
またはweb.config
テキストファイルのみによって参照されるため、ビルドプロセスはこの参照が不要であると見なします(コードはそれを使用しません!)そしてそれを取り除き、GUIプロジェクト出力ディレクトリにMySql.Data.Entity.EF6.dll
が表示されず、これによりGUIプロジェクトがそのプロバイダーを見つけることができません。
だから-2つのオプション-何かがビルドプロセスの一部としてそこにDLL)をコピーすることを確実にする(すなわち、ビルドイベントの前後に、デプロイメントパッケージビルダー、CIタスク、ヒューマンタスク、その他) DB/EF6プロジェクトのアセンブリを直接参照します。
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エンティティモデルを追加して、コードファーストリバースエンジニアリングの良さを構築してお楽しみください。
私のSQLに最新のドットネットコネクタをインストールしようとしましたか? http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html または http://dev.mysql.com/downloads/connector/net / コンテキストに応じて。
私は同じ問題に直面していました。
私は次のことをしました:
1。次からVisual Studio用のMySQLをインストールします。
https://dev.mysql.com/downloads/windows/visualstudio/
2。プロジェクトにMySql.Dataをインストールする
3。プロジェクトにMySql.Data.EntityFrameworkをインストールします
mySQL Bucktracker でこれを見つけました
次の回避策を試してください。
MySQL DBで次のコマンドを実行し、これが機能する場合は試してください。
グローバルなoptimizer_switch = 'derived_merge = off'を設定します
また、次のアセンブリも追加しました。