Как исправить проблему с конфигурацией system.data в Entity Framework - PullRequest
0 голосов
/ 14 января 2019

Если обновил мой проект до mysql.data 8.0.13 и MySql.Data.EntityFramework. Целевой Framework является .net 4.5.2 EF на 6.2 Теперь у меня есть странное поведение, что я должен добавить часть system.data в мою конфигурацию

  <system.data>
    <DbProviderFactories>
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data" />
    </DbProviderFactories>
  </system.data>

Тогда он работает на некоторых машинах. Но на других вы получаете следующую ошибку. (перевод на английский, так как система немецкая)

System.Configuration.ConfigurationErrorsException: An error occurred when creating the configuration section handler for system.data: The column 'InvariantName' has the restriction that it must be unique. The value 'MySql.Data.MySqlClient' already exists. 

Так что, если я вырежу эту часть конфигурации, она будет работать. Но на другой машине это гласит.

System.ArgumentException: The ADO.NET provider with the invariant name 'MySql.Data.MySqlClient' was either not registered on the computer or in the application configuration file, or could not be loaded.  

Есть ли какое-либо решение или проверка возможна? Потому что у меня тоже странное поведение для разных пользователей на одном компьютере (выкатывается с помощью clickonce)

Конфигурационная часть EF

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework"></provider>
    </providers>
  </entityFramework> 

Это должно работать на любом компьютере. Я также не знаю, как добавить больше информации, потому что я действительно не знаю, в чем проблема. Пытался исправить это все выходные.

1 Ответ

0 голосов
/ 14 января 2019

Я не уверен, но вы можете попробовать это:

Из элементов System.data:

Добавить это:

<remove invariant="MySql.Data.MySqlClient" />

выглядит как:

<system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>

Вы можете включить версию или удалить как свою.

Но если вы включаете версию, убедитесь, что вы используете версию MYSQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...