Подтвердить что ты не робот

Правила безопасности наследования, нарушенные по типу: 'MySql.Data.Entity.MySqlEFConfiguration'

Я создал веб-приложение asp.net, которое должно подключиться к базе данных mysql.

Я использую сущность framework 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>

Полная ошибка:

Inheritance security rules violated by type: 'MySql.Data.Entity.MySqlEFConfiguration'. Derived types must either match the security accessibility of the base type or be less accessible.

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

    Exception Details: System.TypeLoadException: Inheritance security rules violated by type: 'MySql.Data.Entity.MySqlEFConfiguration'. Derived types must either match the security accessibility of the base type or be less accessible.
4b9b3361

Ответ 1

Я понизил MySql.Data.Entity.EF6 до более старой версии и решил мою проблему.

Ответ 2

Уменьшить значение MySql.Data.Entity с версии 6.10.x до 6.9.10 можно решить проблему. Он решил шахту

Ответ 3

Я сделал это, и это сработало для меня

  • Установите последние версии entityframwork и mysql.data и mysql.data.entity из диспетчера пакетов nuget

  • Создайте свою модель databasefirst autogenerate

  • Unistall mysql.data.entity и установите mysql.data.entity v 6.9.10 просто узнайте, как установить или удалить.

Ответ 4

То же самое для меня с VS2017. Я использовал MySql.Data.Entity v6.9.10.
До этого я также установил соединитель mysql для .Net версии 6.9.10.

  • После этого я установил пакет NuGet для MySql.Data.Entity.
  • Последним шагом было изменение web.config соответственно:
    • строка подключения,
    • структура сущности и
    • system.data(имейте в виду, что вам необходимо обновить и в последних двух версиях, если вы их заимствуете с сайта mysql)
  • Ах, не забывайте, я добавил также

    DbConfiguration.SetConfiguration(new MySqlEFConfiguration()) 
    

    в моем приложении.

и он, наконец, работал: D