c# - studio - Reglas de seguridad de herencia violadas por el tipo: ''MySql.Data.Entity.MySqlEFConfiguration''
entity framework mysql (7)
He creado una aplicación web asp.net que debería conectarse a una base de datos mysql.
Estoy usando Entidad framework 6 con un modelo de datos de entidad ado.net. También he seguido el siguiente tutorial: https://dev.mysql.com/doc/connectors/en/connector-net-entityframework60.html#connector-net-ef6-config
Sin embargo, se llama a: DbConfiguration.SetConfiguration(new MySqlEFConfiguration());
hace que mi aplicación se bloquee. Probablemente no tenga nada que ver con este método específico, porque crear un DBContext también bloquea la aplicación.
¿Alguna idea de qué está causando este error?
- .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=""" 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>
Error completo:
Reglas de seguridad de herencia violadas por el tipo: ''MySql.Data.Entity.MySqlEFConfiguration''. Los tipos derivados deben coincidir con la accesibilidad de seguridad del tipo base o ser menos accesibles.
Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.
Detalles de la excepción: System.TypeLoadException: Reglas de seguridad de herencia violadas por el tipo: ''MySql.Data.Entity.MySqlEFConfiguration''. Los tipos derivados deben coincidir con la accesibilidad de seguridad del tipo base o ser menos accesibles.
Actualizar el paquete nuget a 6.10.8 solucionó esto para mí
Bajé MySQL.Data.Entity.EF6 a una versión anterior y resolví mi problema.
Bajar la calificación de MySql.Data.Entity de la versión 6.10.x a 6.9.10 puede resolver el problema. Resolvio el mio
He tenido algunos problemas de inestabilidad horrible con 6.9.10. También parece que se ha eliminado de NuGet. Bajo carga pesada recibí esporádicamente "errores de base de datos no encontrados".
Intente 6.9.11 en su lugar. Eso me parece estable. Y está disponible en NuGet.
Hice esto y me funcionó.
Instale las últimas versiones de entityframwork y mysql.data y mysql.data.entity desde el gestor de paquetes nuget
Cree su base de datos modelo primero autogenerar
- Desinstalar mysql.data.entity e instalar mysql.data.entity v 6.9.10 simplemente aprenda cómo instalar o desinstalar
Lo mismo para mí con VS2017. Utilicé MySql.Data.Entity v6.9.10 .
Anteriormente también instalé el conector mysql para .Net versión 6.9.10 .
- Después de eso instalé el paquete NuGet para MySql.Data.Entity .
- El último paso fue modificar el
web.config
consecuencia:- Cadena de conexión,
- marco de la entidad y
- system.data (tenga en cuenta que debe actualizar en las dos últimas versiones también si las toma del sitio web mysql)
Ahh no hay que olvidar que he añadido también.
DbConfiguration.SetConfiguration(new MySqlEFConfiguration())
en mi aplicación se inicia.
y finalmente funcionó: D
Obtuve el mismo problema después de actualizar los paquetes de MySql NuGet de 6.9.8 a 6.10.6 en la comunidad VS 2017. Seguí las instrucciones de la contestadora aceptada y volví a la versión 6.9.x corregida. Tras más investigaciones, Oracle ha corregido el error en la próxima versión 6.10.7 ( https://bugs.mysql.com/bug.php?id=89134 ).
En resumen, hasta que se publique la versión 6.10.7, baje de nuevo a 6.9.x! Volví a usar el gestor de paquetes Nuget y no tuve que cambiar nada más para que funcionara.