エンティティフレームワーク6をmysqlサーバーに使用するasp.netソリューションがあります。
今、私は新しいマシンでそのソリューションに取り組む必要があります。
しかし、いくつかの問題があります。
1)ソリューションのビルド時にエラーが発生します: "不変名「MySql.Data.MySqlClient」のADO.NETプロバイダーがマシンまたはアプリケーションの構成に登録されていませんファイル」。
App.config:
<entityFramework>
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.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.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
2)model.edmxファイルを開くと、次のメッセージが表示されます。
"エンティティモードデザイナーは、要求したファイルを表示できません。"
マシンにインストールしました:
1)mysql connector/net 6.9.9
2)Visual Studio 1.2.6のmysql
3)mysqlコネクターodbc 5.3.6。
私に何ができる?
私はインターネットで提案されたほとんどの解決策に従いましたが、残念ながらすべてが失敗しました。この問題は、Visual StudioにMySqlコネクタがなく、mysql-connector-net-7.0.4をインストールすることで解決したために発生します( https://downloads.mysql.com/archives/c-net/ )
上記の解決策は私にとってはうまくいきませんでした。しかし、 この回答 に触発されて、Web.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, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
</provider>
</providers>
</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">
</provider>
</providers>
</entityFramework>
ETA: このフォローアップ で指摘したように、MySql.Data
ファイル内のWeb.config
のバージョンを手動で編集する必要がある場合があります。
<dependentAssembly>
<assemblyIdentity name="MySql.Data" culture="neutral" publicKeyToken="c5687fc88969c44d" />
<bindingRedirect oldVersion="0.0.0.0-6.9.9.0" newVersion="6.9.9.0" />
</dependentAssembly>
私は多くのグーグルを行って解決策を見つけましたMySQL.Data.dll、MySQL.Web.dll、MySQL.Data.Entity.dll、System.Data.Entity.dllがすべてローカルにコピーされていることを確認します(アセンブリを右クリックしてCopy Localがtrueに設定されていることを確認してください)この問題をデバッグしようとしたときにローカルに次を追加しましたが、おそらく不要なSystem.Data.dll [おそらくオプション] System.Data.Entity.Design [おそらくオプション]
そして、これはあなたがグーグルやAppHarborの多くの場所で読まないステップです! 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.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
App.configの次のセクションで機能します。
<system.data>
<DbProviderFactories>
<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>
この問題を解決するために、 この投稿 で説明した変更に加えて、次のように_MySql.Data
_の_web.config
_のバージョンを手動で編集する必要がありました。
_<dependentAssembly>
<assemblyIdentity name="MySql.Data" culture="neutral" publicKeyToken="c5687fc88969c44d" />
<bindingRedirect oldVersion="0.0.0.0-6.9.9.0" newVersion="6.9.9.0" />
</dependentAssembly>
_
参照リストからMySql.Data.Entity.EF6の古い参照を削除します。 Nuget Package Managerを使用して再インストールすると、動作します/
構成ファイルに_codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6"
_を追加するか、アプリケーションの起動時にDbConfiguration.SetConfiguration(new MySqlEFConfiguration())
を呼び出す必要があります。