Почему мне все еще нужен MySQL Connector, установленный на компьютере, несмотря на наличие соответствующих пакетов NuGet? - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть проект C # ASP.NET MVC, использующий MariaDB с Entity Framework 6.

Этот проект сделан в Visual Studio 2017, и мне потребовалось несколько долгих часов, чтобы дважды проверить, правильно ли яДобавлены ссылки на сборки MySQL-коннектора в виде пакетов NuGet MySql.Data 8.0.13 и MySql.Data.EntityFramework 8.0.13 (обе официально опубликованы Oracle),потому что я получал следующую ошибку при просмотре Views во время отладки:

Поставщик ADO.NET с именем-инвариантом MySql.Data.MySqlClient либо не зарегистрирован в файле конфигурации компьютера или приложения.

Пока я не отказался от него и не попытался установить MySQL Connector / NET 8.0 , после чего он заработал.В файл web.config не было внесено никаких изменений, кроме тех, которые были выполнены NuGet.

Я проверил сборки, помещенные под %ProgramFiles%\MySql\Connector установщиком, и они немного идентичны тем, которые были извлечены NuGet.Черт, Я даже удалил всю папку, и она все еще работала .

Что дает?У пакетов NuGet отсутствует какой-либо шаг, который они должны выполнить?

1 Ответ

0 голосов
/ 30 ноября 2018

Я подозреваю, что установщик Connector / NET 8.0 изменяет ваш файл C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config, который используется всеми приложениями .NET на компьютере.К сожалению, это локальное изменение на вашем компьютере, что означает, что ваше приложение может работать некорректно при развертывании.

Решение состоит в том, чтобы добавить MySql.Data в ваш файл app.config (или Web.config).Я не уверен, предназначены ли пакеты NuGet для этого автоматически или нет.

За Oracle docs , добавьте эту информацию в app.config:

<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=8.0.13.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
   </DbProviderFactories>
</system.data>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...