EF 4.1 исключение "Поставщик не возвратил строку ProviderManifestToken" - PullRequest
87 голосов
/ 24 марта 2011

Я пытаюсь воспроизвести пример, найденный в MSDN. Я использую ASP.NET и EF 4.1 (CTP?). Я использовал NuGet для установки пакета EntityFramework.

Я получаю эту ошибку: The provider did not return a ProviderManifestToken string ... и база данных никогда не создается.

Вот моя строка подключения:

<add name="HospitalContext"
   connectionString=
   "data source=.\SQLExpress;initial catalog=NewTestDB;integrated security=True;"
   providerName="System.Data.SqlClient"/>

Вот мой код:

var pat = new Patient { Name = "Shane123132524356436435234" };
db.Patients.Add(pat);

var labResult = new LabResult { Result = "bad", Patient = pat };

int recordAffected = db.SaveChanges();

Вот мой контекст:

public class HospitalContext : DbContext
{
    static HospitalContext()
    {
        Database.SetInitializer(new HostpitalContextInitializer());
    }

    public DbSet<Patient> Patients { get; set; }
    public DbSet<LabResult> LabResults { get; set; }
}

public class HostpitalContextInitializer :
             DropCreateDatabaseIfModelChanges<HospitalContext>
{
    protected override void Seed(HospitalContext context)
    {
        context.Patients.Add(new Patient { Name = "Fred Peters" });
        context.Patients.Add(new Patient { Name = "John Smith" });
        context.Patients.Add(new Patient { Name = "Karen Fredricks" });
    }
}

Это полностью исправленная система SQL 2008 с VS 2010 SP1.

Ответы [ 15 ]

1 голос
/ 15 мая 2012

При использовании Visual Studio 11 Beta с EF4.1 и ASP.NET MVC я чуть не вырывал волосы, пока не обнаружил

http://connect.microsoft.com/VisualStudio/feedback/details/740623/asp-net-mvc-4-default-connection-string-improperly-escaped

ToРешив мою проблему, я вошел в Application_Start и изменил

Database.DefaultConnectionFactory = new SqlConnectionFactory ("Источник данных = (localdb) \ v11.0; Интегрированная безопасность = True; MultipleActiveResultSets = True");

до

Database.DefaultConnectionFactory = новый SqlConnectionFactory ( @"Источник данных = (localdb) \ v11.0; Интегрированная безопасность = True; MultipleActiveResultSets= True ");

0 голосов
/ 08 июня 2015

У меня была ошибка для структуры сущностей, но ни один из приведенных выше ответов не вписался в решение, которое наконец заработало.

Мой код EntityFramework Первые модели и DataContext были в отдельном проекте от моего основного проекта WebAPI,Мой Entity Framework Project где-то вниз по линии кодирования был задан как стартовый проект, и поэтому, когда я выполнял миграцию, я получал «Поставщик не возвратил строку ProviderManifestToken» ... проблема с подключением.

Оказывается, что поскольку ConnectionString к БД находится в файле Web.config в главном проекте WebAPI, то при выполнении миграции строка подключения не была получена.Установив проект WebAPI в качестве моего startProject, я смог успешно подключиться.

0 голосов
/ 27 мая 2015

Я просто закрыл все экземпляры Visual Studio и снова открыл свое решение.

Я не знаю, что на самом деле произошло, но у меня было одно и то же решение, открытое из двух разных локальных рабочих областей (одно с моими локальными изменениями,один с неизменным исходным кодом репозитория).Я работаю с Postgres DB, Entity Framework 6, Visual Studio 2013 и ASP.NET MVC 5.

0 голосов
/ 24 февраля 2015

Это потому, что не удалось подключиться к серверу SQL.

Убедитесь, что учетная запись пользователя, под которой вы запускаете процесс, имеет доступ к SQL Server.

Если вы сгенерировали DbContext из родительского потока (например, с помощью внедрения зависимостей), а затем, если вы выдавали себя за другого пользователя, эта ошибка возникла бы. Решением будет генерировать DbContext внутри нового потока или нового контекста олицетворения.

0 голосов
/ 16 февраля 2014

У меня есть несколько проектов в решении и я добавил EF для каждого проекта в разное время. На некоторых машинах это работало, а на некоторых - с вышеупомянутой ошибкой. Мне потребовалось некоторое время, чтобы заметить, что некоторые из app.config моего проекта имели следующее:

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

Это нормально, если вы используете LocalDb (новый «sql express»), но совершенно неправильно, если у вас не установлен этот конкретный сервер и вы используете обычный SQL.

Решение: Удалить приведенный выше код.

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