web-dev-qa-db-ja.com

Entity Framework Entity Data Wizard MySQLデータベースに接続するとクラッシュする

ウィザードを使用して既存のMySQLデータベースをリバースエンジニアリングするエンティティデータモデルを作成しようとしています。ウィザードの[データ接続の選択]ページに移動し、既存のMySQL接続を選択して[次へ]をクリックすると、ウィザードがクラッシュします。具体的には、ダイアログボックスはエラーメッセージやトレースなしで消えます。毎回。 VSまたはWindowsを再起動しても何も起こりません。

サーバーエクスプローラーと同じ接続を使用してデータベースに問題なく接続できるので、接続の問題ではないと確信しています。

これは、すべての更新プログラムがインストールされたVisual Studio 2015にあり、Visual Studio用のMySQLバージョン1.2.6、EF 6.1.3、MySql.DataおよびMySql.Data.Entity.EF6バージョン6.8.3.0です。これは、.NET Framework 4.6.1を対象とするコンソールアプリケーションです。

Googleはまだ有用なものを明らかにしていません。昨日からの別の 質問 も同様ですが、別の時点でクラッシュしており、そのユーザーはサーバーエクスプローラーを使用して接続できません。だから、別の状況のようです。

Windowsログには何の助けもありません。

この問題を解決するにはどうすればよいですか?

22
RiverRunner

バージョンの不一致が原因です。

私のシステムでは、MySQL Connector 6.9.6がありました。 NuGet Package Manger Consoleでコマンドを発行する:

Install-Package MySql.Data.Entityは、デフォルトでバージョン6.9.8をインストールします。コネクタは、NuGetパッケージの実際のバージョンと一致する必要があります。コネクターの更新バージョンは、次からダウンロードできます。 https://www.mysql.com/products/connector/

ここで「MySQL用のAdo.netドライバー」を選択し、対応するバージョン(この場合は6.9.8)をダウンロードします。 Visual Studioを再度開くと、ウィザードはクラッシュしません。再起動は必要ありません。

36
Lars Meldgård

今日、この問題が発生しました。「バージョンの不一致」が完全に正しいことをここで説明します。

私の重要な「発見」は、EF6に必要なパッケージの名前を変更したことです!ここで多くの人が発見したように(たとえば「Nofi」)、バージョンに一致するようにダウングレードすると問題が修正されます。ただし、新しいバージョンをダウングレードする代わりに、Mysql.Data.Entityパッケージを新しいMySql.Data.EntityFrameworkに交換します! :)

short:MySql.Data.EntityFrameworkを使用し、NOT Mysql.Data.Entityを使用します

8

Mysql connector v 8.0.12MySql.Data v8.0.12およびMysql.Data.Entity v6。 10.8

互換性の問題が原因でプログラムがクラッシュします。私のために働いたのは、同じバージョンの3つすべてをインストールしたことです

Mysqlコネクタv 6.10.8およびMySql.Data v6.10.8およびMysql.Data.Entity v6.10.8.

3
Nofi

これは、VS2017および最新のMySQLコネクタ(6.10.6)で引き続き発生します。コネクタとNugetパッケージの両方を6.9.11にダウングレードできます。

2
ctzei

プログラミング/.Net開発は初めてです。 MySqlデータベースからエンティティモデルを生成しようとすると、ウィンドウが消えるという同じ問題がありました。

一致するバージョンのNugetパッケージとコネクタを試しましたが、それでも喜びはありませんでした。私がそれを機能させるためにしたことは次のとおりです。

  • プロジェクトを削除してから再作成しました(幸運なことに、新しいプロジェクトでした)-データベースからモデルを生成しました
  • 次に、コネクタのバージョンに合わせてNugetパッケージをインストールしました。

VS 2017 Community Edition、Connector V6.9.9、NugetパッケージV6.8.8を使用しています

これが誰かを助けることを願っています。

1
Nico Slabbert

MySql.Data.Enetityの最高バージョンはv6.10.8なので、nugetで見つけることができるので、「mysql-connector-net-6.10.8.msi」をダウンロードしたので、MySql.Dataをv.6.10.8にダウングレードしました。 、それはトリックでした!

1
Gabor Nagy

運と偶然から、私は同じエラーに遭遇しました。 VS 2015でEntity Framework 6も使用しています。エラーは、EFリバースエンジニアリングの既存の接続を使用してデータベースからモデルを作成しようとしたときにも発生しました。

問題は、データ接続が存在し、それを更新できるにもかかわらず、何らかの理由で接続が切断されることです。左側のServer Explorerパネルに移動し、Data Connectionsで既存の接続を見つけ、refreshを使用して確認する代わりに、右クリックしますそれを選択し、接続の変更を選択します。

ここから、接続をテストして[OK]を押してください。エラーが発生するはずです(私にとっては、「指定されたMySQLホストのいずれにも接続できません。」と言われました)

1
Keyur PATEL

LarsMeldgårdにコメントしたように、Connector/Netのバージョン6.9.9をアンインストールして再インストールすると、ウィザードがさらに1ページ進みました。だから私はそれを勝ちと考えます。しかし、これがなぜ機能したのか、本当に混乱しています。メインのデスクトップマシンとラップトップの2つの異なるコンピューターで問題が発生していました。すべてが最新のWindows 10の同様の構成で、両方とも破損していましたか?ありそうにない。

そのため、問題はウィザードの[バージョンの選択]ページにあり、以下のエラーが表示されます。しかし、それは別の問題であり、次に対処します。

ウィザードの次のページの新しいエラー

1
RiverRunner

不一致は、MySQL Connector Netの正確なバージョンにあるようです。 「MySQL Connector Net 8.0.13」を使用したdevおよびprodのプロジェクトが多数ありますが、まだ全面的にアップグレードすることはできません。現在のNuGetパッケージは「MySQL Connector Net 8.0.15」でした。 「MySql.Data.EntityFramework 8.0.15」と「MySql.Data 8.0.15」の両方をアンインストールしてから、コマンドラインインストールのバージョンを、devとprodで実行するMySQL Connector Netの現在のバージョンに一致させる必要がありました。

PM> Install-Package MySql.Data -Version 8.0.13
PM> Install-Package MySql.Data.EntityFramework -Version 8.0.13
0
Justin
<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.EntityFramework, Version=8.0.16.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
    </providers>

コネクタ8.0.16と問題がなくなったため、MySql.Data.EntityFrameworkのバージョンを8.0.16に変更しました。これは私のために働いた

0
aziz eser

これは本当に頭痛の種であるため、最終的に解決した問題を共有しています。

テーブルロールのロールID列を最初にSQLでnumber(38,0)に設定し、そのように作成してから、NUMBER(10,0)に変更して変更しました。これを何日か解決しようと試みた後、サーバー接続のテーブルを最後に右クリックし、「デザイナー」をクリックしました。私の1つのテーブル:ロール、列IDがあります-タイプ番号(10,0)。 RoleIDとしてテーブルUSERにリンクされました。テーブルUSERのRoleIDを確認した後、デザイナーではNumber(38,0)として表示されていました。だからあなたの外部キーを一つ一つチェックしてください...これは私の問題でした。私のEFダイアログボックスも消えたばかりであるか、EDMXファイルにテーブルが表示されません。

0
Ryno Potgieter