Mysqlデータベースに接続するasp.net Webアプリケーションを作成しました。
私は、ado.netエンティティデータモデルでエンティティフレームワーク6を使用しています。また、次のチュートリアルに従いました: https://dev.mysql.com/doc/connectors/en/connector-net-entityframework60.html#connector-net-ef6-config
ただし、次の呼び出し:DbConfiguration.SetConfiguration(new MySqlEFConfiguration());
アプリケーションがクラッシュします。 DBContextを作成するとアプリがクラッシュするため、おそらくこの特定のメソッドとは関係ありません。
このエラーの原因は何ですか?
Web.config:
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<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><add name="DatabaseEntities" connectionString="metadata=res://*/Database.Model.csdl|res://*/Database.Model.ssdl|res://*/Database.Model.msl;provider=MySql.Data.MySqlClient;provider connection string=""" providerName="System.Data.EntityClient" /></connectionStrings><system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add description=".Net Framework Data Provider for MySQL" invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.10.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
完全なエラー:
タイプ: 'MySql.Data.Entity.MySqlEFConfiguration'によって違反された継承セキュリティルール。派生型は、基本型のセキュリティアクセシビリティと一致するか、アクセス性が低くなる必要があります。
説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーの詳細とコードのどこで発生したかについては、スタックトレースを確認してください。
例外の詳細:System.TypeLoadException:タイプ 'MySql.Data.Entity.MySqlEFConfiguration'に違反する継承セキュリティルール。派生型は、基本型のセキュリティアクセシビリティと一致するか、アクセス性が低くなる必要があります。
MySql.Data.Entity.EF6を古いバージョンにダウングレードし、問題を解決しました。
MySql.Data.Entityをバージョン6.10.xから6.9.10にダウングレードすると、問題を解決できます。それは私のものを解決しました
6.9.10では恐ろしい不安定性の問題がありました。また、NuGetから削除されたようです。負荷が高いと、「データベースが見つからないエラー」が散発的に発生していました。
代わりに6.9.11を試してください。それは私にとって安定しているようです。そして、NuGetで利用可能です。
私はこれをやった、それは私のために働いた
Nugetパッケージマネージャーからentityframworkとmysql.dataおよびmysql.data.entityの最新バージョンをインストールします
モデルデータベースを作成する
VS 2017 CommunityでMySql NuGetパッケージを6.9.8から6.10.6にアップグレードした後、同じ問題が発生しました。受け入れられた回答の指示に従い、6.9.xにダウングレードして修正しました。さらに調査した結果、Oracleは今後の6.10.7リリースでバグを修正しました( https://bugs.mysql.com/bug.php?id=89134 )。
要するに、6.10.7がリリースされるまで、6.9.xにダウングレードしてください! Nugetパッケージマネージャーを使用して元に戻しましたが、機能させるために他に何も変更する必要はありませんでした。
Nugetパッケージを6.10.8にアップグレードすると、これが修正されました
VS2017でも同じです。 MySql.Data.Entity v6.9.1を使用しました。
それより前に、。Netバージョン6.9.1のmysqlコネクタもインストールしました。
web.config
したがって:忘れないように私も追加しました
DbConfiguration.SetConfiguration(new MySqlEFConfiguration())
私のアプリで起動します。
そしてそれは最終的に働いた:D