web-dev-qa-db-ja.com

タイプ:MySql.Data.Entity.MySqlEFConfigurationによる継承セキュリティルール違反

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を作成するとアプリがクラッシュするため、おそらくこの特定のメソッドとは関係ありません。

このエラーの原因は何ですか?

  • .NET Framework:4.6.1
  • MySql.Data.Entity.EF6:6.10.4

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=&quot;&quot;" 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'に違反する継承セキュリティルール。派生型は、基本型のセキュリティアクセシビリティと一致するか、アクセス性が低くなる必要があります。

21
Jamie

MySql.Data.Entity.EF6を古いバージョンにダウングレードし、問題を解決しました。

38
Jamie

MySql.Data.Entityをバージョン6.10.xから6.9.10にダウングレードすると、問題を解決できます。それは私のものを解決しました

8
Hung Vu

6.9.10では恐ろしい不安定性の問題がありました。また、NuGetから削除されたようです。負荷が高いと、「データベースが見つからないエラー」が散発的に発生していました。

代わりに6.9.11を試してください。それは私にとって安定しているようです。そして、NuGetで利用可能です。

2
Dennis Robinson

私はこれをやった、それは私のために働いた

  1. Nugetパッケージマネージャーからentityframworkとmysql.dataおよびmysql.data.entityの最新バージョンをインストールします

  2. モデルデータベースを作成する

  3. Mysql.data.entityをアンインストールし、mysql.data.entity v 6.9.10をインストールするだけで、インストールまたはアンインストールの方法を学習できます。
1
IAmIranian

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パッケージマネージャーを使用して元に戻しましたが、機能させるために他に何も変更する必要はありませんでした。

1
Matt H

Nugetパッケージを6.10.8にアップグレードすると、これが修正されました

0
flobadob

VS2017でも同じです。 MySql.Data.Entity v6.9.1を使用しました。
それより前に、。Netバージョン6.9.1のmysqlコネクタもインストールしました。

  • その後、MySql.Data.EntityのNuGetパッケージをインストールしました。
  • 最後のステップは、web.configしたがって:
    • 接続文字列、
    • エンティティフレームワーク
    • system.data(mysql Webサイトから取得する場合は、最新の2つのバージョンでも更新する必要があることに注意してください)
  • 忘れないように私も追加しました

    DbConfiguration.SetConfiguration(new MySqlEFConfiguration()) 
    

    私のアプリで起動します。

そしてそれは最終的に働いた:D

0
C.Sv