Поставщик не возвратил строку ProviderManifestToken Entity Framework

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

Внутреннее исключение: {"The provider did not return a ProviderManifestToken string."}

Я искал другие темы, так как есть много похожих ошибок, но я не могу найти решение.

Я использую VS2012 Professional и SQL Server 2012. Я могу подключиться к серверу с помощью Server explorer, используя проверку подлинности Windows. Я создаю приложение webforms с несколькими уровнями. Один из них содержит мой уровень структуры Entity, который содержит мой класс Context.

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>

  <connectionStrings>
    <add name="MYSQLSERVER"
         providerName="System.Data.SqlClient"
         connectionString="Data Source=myComputer\MYSQLSERVER;Trusted_Connection=true"></add>
  </connectionStrings>
</configuration>

Вот что выглядит app.config в моем классе библиотеки классов Entity Framework.

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
</configuration>

Кроме того, я попытался изменить тип appConnectionFactory app.config на

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">

но ничего не изменилось.

Я не совсем уверен, что какие-либо изменения, которые я делаю, даже означают, что меня беспокоит. Конечно, я мог найти решение в Интернете и исправил свою проблему, но мне очень хотелось бы понять web.config и что все это значит. Наверху найти решение этой проблемы, может ли кто-нибудь указать мне в правильном направлении на изучение web.configs?

Благодарим вас за помощь.

Ответ 1

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

Ответ 2

Ну, я исправил его.

Просто нужно поставить ".". для локальной машины в источнике данных следующим образом:

<add name="MYSQLSERVER"
     providerName="System.Data.SqlClient"
     connectionString="Data Source=.\MYSQLSERVER;Trusted_Connection=true"></add>    
</connectionStrings>

Ответ 3

Вот еще одна возможная причина:
У меня есть и мой (ASP.NET) HTTP-сервер, и сервер MySQL/Aurora на AWS (понял, что AWS не был частью комментариев OP).
Мой рабочий стол (фактически, наш корпус) был включен в группу безопасности сервера MySQL/Aurora, поэтому все отлично работало для разработки.
Но IP-адрес ASP.NET не был включен в белый список для экземпляра MySQL/Aurora, поэтому запрос на соединение EF-сервера ASP-сервера отклонялся, и это вызывало исключение, указанное в верхней части этого потока. Эзотерический, но, возможно, это помогает кому-то.

Ответ 4

Я также столкнулся с этой ошибкой, и я решаю, что понижение этих пакетов NuGet

MySql.Data - 6.9.12

MySQL.Data.Entity - 6.8.8

это мой ссылочный URL, на который я ссылался

Ответ 5

.. и FINALLY (?!?) не забудьте создать свой проект с помощью опции "Предпочитать 32-бит", поскольку это приведет к исключению KNOWN BUG, ​​который генерирует это сообщение об ошибке (в котором есть внутреннее сообщение об исключении = "Arithemtic переполнение ')

Ответ 6

Я встречаю эту проблему, когда пытаюсь подключиться к mysql, причина в том, что я забываю добавить "пароль" в "connectionStrings"

Ответ 7

В моем случае параметр был v12.0, я изменился на v11.0 и работает

                      

Ответ 8

У меня была такая же проблема, переустановка Npgsql с менеджером пакетов сделала трюк. Казалось, что проблема с версиями.

Ответ 9

Для меня это было использование двойной обратной косой черты между сервером и экземпляром, например. \SQLExPRESS;... и т.д.

Исправление было использовать. \SQLEXPRESS

надеюсь, это поможет кому-то.

Ответ 10

Для меня все это было ниже. 1. БД не разрешено подключаться к моей среде разработки. Могут быть ограничения брандмауэра. 2. Строка подключения имела неверные учетные данные для БД. Так что, вообще говоря, неверная строка подключения.