Visual Studio 2017 не показывает MySQL в списке соединений

1

Я использую "Visual Studio 2017 Professional". Я не могу получить проект, чтобы признать, что MySQL является доступным вариантом БД. MySQL не отображается в списке возможных подключений при создании новой модели. Я знаю, что есть тонны вопросов SO и других веб-страниц на эту тему, потому что я пробовал много предложений. Каждый из них является тонким, отличным по причине и решению. Ни одно из решений, похоже, не работает для меня.

Я пробовал следующее с VS 2017 и 2015 с теми же результатами. У меня есть более старые версии VS, но, похоже, не стоило идти дальше. Я также попытался установить последнюю и более старую версию MySQL как с "установщиком сообщества", так и с автономным msi, когда это необходимо. Я вернулся к "последней" версии MySQL версии 6.10.

Для начала эта сага началась на прошлой неделе, когда я заметил, что nuget имеет доступные обновления пакетов MySQL. Я применил их, а затем пошел обновлять установленные компоненты MySQL с помощью установщика сообщества. Изменения nuget действительно применимы. Установщик сообщества не смог удалить MySQL для VS. Системный установщик не смог его удалить. Перезагрузка и круговое движение ничего не сделали.

По рекомендации наших локальных специалистов по технической поддержке я использовал сторонний деинсталлятор, который оказался более агрессивным, чем мы предполагали. Кажется, он случайно удалился через реестр, стирая все, что он нашел. Короче говоря, я закончил работу с моей машиной. Итак, у меня есть новые окна.

Учитывая новую платформу Win10, я установил различные вещи, которые я обычно использую, включая версии VS, которые я обычно использую. Я установил последний установщик MySQL MySQL. Я выполнил "обычную" установку MySQL, потому что мне не нужен сервер на этом устройстве или в сети или много чего.

Я закончил базовую переустановку, а затем перезагрузился, чтобы быть уверенным. Я начал VS 2017 и создал новое веб-приложение с последней доступной версией.Net(4.6.1). Я применил nuget обновления и добавил EntityFramework и MySQL.Data. Затем я попытался создать новую модель "code first".

Я могу дойти до того момента, когда меня попросят создать соединение. Когда я нажимаю кнопку, список доступных поставщиков БД показывает только MS SQL.

Я видел статьи, которые говорят, чтобы добавить строки в Web.config и я видел документы MySQL.Net Connector, которые говорят то же самое. Я могу видеть записи MySQL в Web.config но они не отображаются при создании соединения.

Странность заключается в том, что я могу перейти в Tools → Connect to Database и посмотреть КАЖДЫЙ тип БД, который моя машина знает о включении MySQL. Я могу создать строку подключения, и она работает. Я вижу БД в "Server Explorer", но это не делает его доступным для кода.

Хорошо, я снова и снова следовал вышеуказанным шагам, включая понижение версии EntityFramework, а также версию MySQL.

Моя последняя попытка заставила меня вернуться к последней версии VS и MySQL. Соответствующий (я думаю) раздел файла Web.config следует за ним. Обратите внимание на defaultConnectionFactory запись LocalDbConnectionFactory. Я изменил это на SqlConnectionFactory но это не изменило ситуацию. Я также изменил порядок поставщиков и порядок основных блоков.

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <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.Entity.EF6, Version=6.10.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
      </provider>
    </providers>
</entityFramework>
<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.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
</system.data>

редактировать

Мое настоящее впечатление заключается в том, что VS 2017 - это непригодный беспорядок, замаскированный как выпущенный, продаваемый продукт. Я вернулся к 2015 году.

Я подошел ближе к тому, чтобы это работало в 2015 году. У меня есть последние элементы MySQL для VS и.Net. Я снизил пакет Euget EF до 6.0 и пакеты MySql до 6.8.8.

В, что я сейчас называю "добрыми старыми днями", я мог бы добавить новую модель в проект MVC, выбрав папку "Модели"; выбор "Добавить новый элемент"; выбор модели ADO.Net; выберите вариант подключения (MySQL); введите информацию о подключении; выберите DB First или Code First и дождитесь окончания забастовки.

Теперь я должен сначала перейти в Tools → Connect to Database и создать соединение с MySql DB. Если я этого не сделаю, позже я не увижу MySQL в списке возможных подключений. Затем я очищаю и строю проект. Затем я попытаюсь создать модель, как указано выше. Noe Я могу видеть вариант подключения MySQL, и я могу ввести кредиты DB и проверить соединение.

Следующим шагом будет выбор DB First или Code First. В любом случае нажатие кнопки "Следующий" мигает пустым всплывающим окном, которое затем исчезает. Ошибок не отображается, и соединение не производится.

Это никогда не было так тяжело в прошлом.

На данный момент я пробовал много разных версий MySQL и EF в 2015 и 2017 годах. Если есть волшебная комбинация, пожалуйста, скажите мне.

  • 1
    Обрабатывает ли установщик сообщества Connector / NET для MySQL? Если нет, то иди найди это.
  • 0
    @O.Jones:О.Джонс: Да, это так. Документы говорят, специально для его установки после установки MySQL для VS ..., что я сделал.
Теги:
visual-studio
entity-framework

2 ответа

2

Я боролся с этим боем две недели. Я НАКОНЕЦ нашел комбинацию версий, которая работает для меня. Следующее было применено к первозданному перерисовке моего рабочего стола Win10 две недели назад. Все патчи были применены к системному программному обеспечению, прежде чем начать работать с MySql.

Только сегодня утром я перечитываю сообщение в этой теме (MySql Forums): https://forums.mysql.com/read.php?174,659102,660369#msg-660369

Я думал, что раньше я пробовал эти предложения, но я, должно быть, испортил одну из версий. Я думаю, что базовая стратегия плаката звучит. В моем случае я удалил все локальные части MySql и установщик.

Я загрузил MySQL для Visual Studio - последнюю версию разработки (2.0.5 msi на момент написания этой статьи) и установил это.

Я нашел OLD-версии.Net Connector и установил 6.9.11

В VS 2017 я создал фиктивный проект, используя.Net 4.6.1.

Я применил ожидающие обновления VS.

Я построил проект.

Я пошел в "Project → Manage Nuget Packages" и установил/понизил рейтинг EntityFramework до 6.0.

Я установил MySql.Data, MySql.Data.Entity и MySql.Web все в версии 6.9.11

Я очистил и построил проект, а затем попытался добавить новую модель "Code First" из базы данных MySql... ЭТО РАБОТАЛО!

0

Спасибо 7 Ридс за возвращение с ответом. Это привело меня к работе, хотя я сделал это немного по-другому.

В VS 2017 для подключения к MySQL 5.6:

  1. Удалите все продукты MySQL с компьютера
  2. Установите Целевую платформу на .NET Framework 4.5.2
  3. Удалите EntityFramework и все пакеты MySQL в Nuget
  4. Установите MySql.Data.Entity(6.10.7)

    Также будут установлены необходимые версии пакетов Nuget MySql.Data(6.10.7), EntityFramework (6.1.3) и BouncyCastle (1.8.3.1).

    Пакет MySql.Data.Entity говорит, что это зависит от Google.Protobuf, но он не установил его и работает нормально для меня.

    В моем проекте добавлены ссылки на BouncyCastle.Crypto(1.8.3.0), EntityFramework (6.0.0.0), MySQL.Data(6.10.7.0) и MySql.Data.Entity.EF6 (6.10.7.0).

  5. Закрыть Визуальная студия

  6. Установите "MySQL для Visual Studio" (1.2.8)
  7. Установите "Соединитель/NET" (6.10.7)
  8. Удалить папки bin и obj
  9. Откройте Visual Studio и перестройте решение
  10. Add New Item > ADO.NET Entity Data Model > Теперь вы в мастере
  11. Выберите EF Designer from database
  12. На следующем экране ("Мастер Entity Data Model Wizard") нажмите New Connection...
  13. На экране "Свойства подключения" нажмите кнопку " Change... для "Источник данных".
  14. Вы должны быть в состоянии выбрать MySQL Database в качестве "источника данных"
  15. "Поставщик данных" должен автоматически заполняться .NET Framework Data Provider for MySQL
  16. Ура! Продолжайте, как обычно

Для потомков, вот app.config для моего приложения WPF:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>

    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v13.0" />
      </parameters>
    </defaultConnectionFactory>
    <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.Entity.EF6, Version=6.10.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </providers>
  </entityFramework>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.10.7.0" newVersion="6.10.7.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <connectionStrings>
    <add name="MyDB" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=my.example.com;user id=NotMyRealUserID;password=NotMyRealPassword;persistsecurityinfo=True;database=MyDatabase&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

Я не уверен, что это создало, но у меня есть "Пользовательская переменная" в моих "Переменных среды" с именем MYSQLCONNECTOR_ASSEMBLIESPATH со значением C:\Program Files (x86)\MySQL\MySQL Connector Net 6.10.7\Assemblies\v4.5.2

Ещё вопросы

Сообщество Overcoder
Наверх
Меню