c# - 유형별로 상속 보안 규칙 위반:'MySql.Data.Entity.MySqlEFConfiguration'




asp.net-mvc entity-framework (4)

mysql 데이터베이스에 연결해야하는 asp.net 웹 응용 프로그램을 만들었습니다.

나는 엔티티 프레임 워크 6을 ado.net 엔티티 데이터 모델과 함께 사용하고 있습니다. 나는 또한 다음 튜토리얼을 따라 갔다 : 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'. 파생 된 유형은 기본 유형의 보안 액세스 가능성과 일치하거나 액세스하기가 적어야합니다.

설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : System.TypeLoadException : 상속 보안 규칙이 'MySql.Data.Entity.MySqlEFConfiguration'형식으로 위반되었습니다. 파생 된 유형은 기본 유형의 보안 액세스 가능성과 일치하거나 액세스하기가 적어야합니다.


MySql.Data.Entity.EF6을 이전 버전으로 다운 그레이드하고 내 문제를 해결했습니다.


VS 2017 커뮤니티에서 6.9.8에서 6.10.6으로 MySql NuGet 패키지를 업그레이드 한 후에도 동일한 문제가 발생합니다. 나는 대답의 지시를 따르고 다시 6.9.x로 내려갔습니다. 추가 조사를 통해 Oracle은 곧 출시 될 6.10.7 릴리스 ( https://bugs.mysql.com/bug.php?id=89134 )에서 버그를 수정했습니다.

즉, 6.10.7이 릴리스 될 때까지 6.9.x로 다운 그레이드합니다! 나는 Nuget 패키지 관리자를 사용하여 되돌아 왔고 다른 것을 바꿔서 작동시키지 않았습니다.


나는 6.9.10에서 끔찍한 불안정성 문제를 겪었다. NuGet에서 제거 된 것 같습니다. 무거운 하중에 나는 "데이터베이스를 찾을 수 없습니다 오류"산발적으로지고있다.

대신 6.9.11을 시도하십시오. 그건 나에게 안정적으로 보입니다. NuGet에서 사용 가능합니다.


나는 이것을했고 나를 위해 일했다.

  1. nuget 패키지 관리자에서 최신 버전의 entityframwork 및 mysql.data 및 mysql.data.entity를 설치하십시오.

  2. 먼저 자동 생성하는 모델 데이터베이스를 만듭니다.

  3. mysql.data.entity를 설치 해제하고 mysql.data.entity v 6.9.10을 설치 또는 설치 제거하는 방법을 배우십시오.




entity-framework