昨日、Entity FrameworkがDatasetまたはDataReaderを使用する以外にデータベースにアクセスする別の方法であることを知っていたので、MVS 2013のMySqlデータベースサーバーでEntity Framework 6を動作させようとしました。
.Net FrameWork 4.5.1でWinFormsを開きます。 (したがって、プロジェクトにはApp.configのみがあり、app/web configはありません) mysql-installer-community-5.7.3.0-m13.msi および
entityFrameworkパッケージをインストールする
[ツール]メニュー->ライブラリパッケージマネージャー->ソリューション用のNuGetパッケージの管理...->オンライン->(検索)EntityFramework(このパッケージのバージョンに注意してください。バージョン6.0.2でなければ、[更新]-> EntityFrameworkをクリックします。更新する)
を介してADO.NET Entity Data Modelを追加しようとしたとき
右クリックプロジェクト->追加->新規アイテム-> ADO.NETエンティティデータモデル->データベースから生成->新規接続->データソース:->変更...-> MySQLデータベース->サーバー名を入力サーバーIP、ユーザー名、パスワード->データベース名の選択->接続のテスト-> OK
次に、エンティティ接続文字列が生成されます-> App.Configでエンティティ接続設定を次として保存->次へ>->
Entity Frameworkのどのバージョンを使用しますか? Entity Framework 6.0オプションがありますが、使用できないため
「プロジェクトはEntity Frameworkの最新バージョンを参照しています。ただし、このバージョンと互換性のあるEntity Frameworkデータベースプロバイダーがデータ接続に見つかりませんでした。このウィザードを終了し、互換性のあるプロバイダーをインストールし、このアクションを実行する前にプロジェクトを再構築します」.
これを解決する方法は?
ところで、Nuget PackageにEntity Frameworkバージョン5をインストールする場合、ここにオプションEntity Framework 5.0があり、バージョン6ではなくEntity Framework 5を使用できる可能性があります。
まず第一に、mysql-installer -community- 5.7.3.0-m13.msiをインストールするために必要すらありませんです。
EntityFramework
Mysql.Data
Mysql.Data.Entities
Mysql.Web
5. App.configにtag entityFrameworkがある場合は、コメントして、タグの起動後にApp.configに新しいタグentityFrameworkを挿入してください
<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>
6. ADO.NET Entity Data Modelを追加します(質問で述べたとおり)
7. エンティティ接続文字列が生成されます(質問に記載されているように)および[App.Configでエンティティ接続設定を保存する]にチェックマークを付けて[次へ]をクリックします
8.データベースオブジェクトと設定を選択します(テーブル、ビュー、またはストアドプロシージャと関数)(のみがあるため、どのバージョンのEntity Frameworkを使用しますか?) one Entity Framework 6.0プロバイダーなので、私の唯一のプロバイダーが有効な場合はskip選択を指示します)
9.終了
おめでとうございます^^
ところで、.dllファイルを追加する必要があるかもしれません
このフォルダー内
C:\ Program Files\MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5(32ビットWindows)
C:\ Program Files(x86)\ MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5(64ビットWindows)
さらなるEF6機能のプロジェクト参照として。
V-Shyの指示に従いましたが、LaRae Whiteと同じ問題を抱えていましたが、ウィザードがシャットダウンしました。 VS2015を実行していて、MySqlインストーラーを使用してVisual Studio v1.2.6およびConnector/NET v6.9.8のMySQLに更新したばかりです。
私が最終的にそれを機能させるためにしたことはこれでした:
私はそれが誰かを助けることを願っています。
修正は次のとおりです。
App.ConfigまたはWeb.Configから古いコードを削除する
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb" /> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework>
以下のコードに置き換えます。
<entityFramework> <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"> </defaultConnectionFactory> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> </providers> </entityFramework>
プロジェクトをリビルドし、新しいADO .NET Entity Data Modelを追加してみてください
私はこの問題を解決する方法を見つけるのに一日中費やしますが、何も助けにはなりません。どうやら私は人々が言及していない1つのことを理解する
Model.edmxプロパティには「DDL Generation Template」全体があり、デフォルトでは「SSDLToSQL10.tt(VS)」に設定されていますが、「SSDLToMySQL.tt(VS)」に設定する必要があります
さらに、エラーが発生していました:
実行中の変換:System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。
bla bla bla
行93 c:\ Program Files(x86)\ Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen\SSDLToMySQL.tt
「MySQL for Visual Studio 1.1.3」の公式バグにつながる理由は、次のビルド1.1で修正される予定です.4これは今のところ利用できません。
ただし、回避策の修正があります。
"MySql.Data.Entity.EF6.dll"を上書きします
C:\ Program Files(x86)\ Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies
NETコネクターからのファイル
C:\ Program Files(x86)\ MySQL\MySQL Connector Net 6.8.3\Assemblies\v4.5 \
私も同じ問題を抱えていて、ここにあるようなさまざまな修正を試みましたが、これもMySQLフォーラムからのもので、EDMXを更新できませんでした。
しばらくして(非常に長い時間)、このことをVS 2013アップデート3、.Netコネクタ6.9.4、Myvc for VS 1.2.3 for MvcApplicationで動作させることができました。
最初に、真新しいマシンで試してみました。すべてがVSのシンプルなインストールで機能し、続いてVS用のコネクタとMysqlが機能しました。次に、古いVS 2012でも試してみましたが、これも機能しました。私はすでに自分のマシンでEF5を使用していくつかのプロジェクトを作成しており、古いEF5ファイルがEF6のファイルに干渉する可能性があると考えていました。
だからここに私がやったことがありますが、これはマシン関連の問題であり、私が必死に試したすべてのことのリストをあなたに与えていることを覚えておく必要があります:
C:\ Program Files(x86)\ Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssembliesフォルダー内のすべてのMySql。*。dllを削除します
C:\ Program Files(x86)\ Microsoft Visual Studio 12.0\Common7\IDE\PublicAssembliesフォルダーのMySql.Data.Entity.dllをConnectorフォルダーのフォルダーで上書きします
NugetコンソールのプロジェクトからEntityFrameworkをアンインストールしてから、EF 6.0.0にダウングレードします。Install-Package EntityFramework -ProjectName YourProject -version 6.0.0
Nugetではなく、ファイルを直接参照することにより、MySql.Data.Entity.EF6への参照を追加します(C:\ Program Files(x86)\ MySQL\MySQL Connector Net 6.9.4\Assemblies\v4.5\MySql.Data.Entity .EF6.dll)
私のapp.configファイルは次のようになります
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --></configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<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>
<connectionStrings>
<!-- your connection string here -->
</connectionStrings>
</configuration>
そして、プロジェクトに追加された参照はこれらの3つです
一部の手順は役に立たなかったかもしれませんが、ついにEDMXファイルを更新できるようになりました。もちろん、Webプロジェクトをビルドして実行すると、VSはMySql DLLの削除の影響を受けません。それが役に立てば幸い。
MySQLドキュメントに示されているように、DbContext
に注釈があることを確認します。
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public partial class MyDbContext : DbContext
{
}
データベースを最初に ASP.NET MVCアプリケーションを使用すると、EDMXファイルを別のマシンのソース管理から外れるまで更新できます。
アノテーションを追加するまで同じエラーに直面し続けたので、これがEntity Framework 6でMySQLを使用しているときにEDMXを更新できない、またはエラーを見つける人を助けることを願っています。
私も同じ問題を抱えていました。私の場合、私は:
1つのみ MySql.Data.MySqlClientプロバイダーがプロバイダー内にあり、バージョンが含まれているはずであるように構成ファイルを変更します。
<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.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
これらの答えはどれも私にとってそれを解決しませんでした。唯一機能したのは、MySql.Data.EntityFramework NuGetパッケージをインストールすることでした。 VSを再起動して再構築すると、ウィザードを完了できました。 (VS2017 15.8.7のWPF)。
VS2013コミュニティにも同様の問題がありますが、私のものはWinFormではなくASP.NET MVCです。上記のすべてのソリューションを実行した後、私の問題はまだそこにありますが、それら(特にHamed)はそれを修正するためのアイデアをくれました。
したがって、ここまでスクロールすると、アイデアが得られるかもしれません。私は持っています:
この助けを願っています。
Ih303のような問題がありました。修正方法:
-ソリューションV-SHYをフォロー
-エラーメッセージなどがない場合、ウィザードは終了します->次の解決策を実行します(私にとってはうまくいきました):
入れる代わりに:
<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>
次のように変更します。
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<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>
再構築->ウィザードの追加など->動作するはずです。
過去2日間何時間も苦労した後、最終的に私が役立ったのは、すべてのコードを古いEF5コードに戻し、ADO .NET Entity Data Modelを削除して、それを再度追加することです- [〜#〜] without [〜#〜]エンティティフレームワーク6.0(これは無効になっています)を選択しますが、5.0を選択します。最新のmysqlコネクタ、Visual Studioプラグイン、および私がインストールしたその他すべてのもの前述のように、Visual StudioはEntity Framework 6.0を自動的に追加しましたADO「選択」を無視するエンティティデータモデル。その後、要求されたプロジェクト(EntityFramework、mysql.data 、mysql.data.entity.EF6 ver 6.9.6)および最終的に動作します。
次の参照を削除することで、何とか動作するようになりました。
MySql.Data.Entity.EF6
MySql.Data
代わりにNugetをインストールしました
MySql.Data.Entity
それは、上記で削除されたフレームワークへの参照を追加するだけでなく、プロジェクトの構成を変更しました。 nugetをインストールした後、dllファイルがbinディレクトリに追加されるように、プロジェクトも再構築しました。
Oracle接続のADO.NET Entity Data Modelアイテムを追加すると、「プロジェクトはEntity Frameworkの最新バージョンを参照しています...」というエラーメッセージが表示されます
解決手順はこちらです。
Oracle ODTwithODAC122010を32ビットとしてインストールします
VS2017でプロジェクトを作成する
アクティブソリューションプラットフォームをAnyCPUから32ビットに変更
[ツール]-> [Nuget PackageManager]-> [ソリューションのNugetパッケージの管理]を開きます。
ブラウズ領域「ODP」を記述し、次のプログラムをインストールします
オラクル。 ManagedDataAccessおよびOracle.ManagedDataAccess.EntityFramework
6. [ツール]-> [Nuget PackageManager]-> [パッケージマネージャーコンソール]を開きます。
7.このInstall-Package EntityFramework -Version 6.1.1を書いてEnter
8. Visual Studioを再起動してプロセスを終了します
9.アプリケーションを再構築する
11.必要に応じて、Oracleへの新しい接続の追加(データソース= Oracleデータベース(ODP.NET、マネージドドライバー))
12.すべてがOKです。
注EF6.1.3はVS2017およびOracle ODTwithODAC122010で動作しません。しかし、これらすべてのプロセスの後、私はEFをEF6.1.3として変更しました。それは機能していますが、アドバイスはしません。
私にとって、これは32ビットVS 64ビットデータベースドライバーと何か関係があるようです。
少なくともこの時点で、構成をx64に変更することで、このエラーの有無を切り替えることができます。どのCPUを試しても機能せず、x86を試しても機能しません。
32ビットMySQLドライバーを使用するか64ビットMySQLドライバーを使用するかを決定する場所がわかりません。インストーラーは両方をインストールすると主張します。
(1つ以上のNuGetパッケージを追加する必要がありましたMySql.Data
、MySql.Data.Entity
、およびMySql.Data.Entities
、およびEntityFramework
。
モデルをプロジェクトに追加したら、今まで問題なくプロジェクトをx86に戻すことができました。