Я пытаюсь воспроизвести пример, найденный в 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.
SqlServerCe.Entity.dll
Ответы:
Я получал эту ошибку и попробовал несколько предыдущих предложений. Затем я проверил внутреннее исключение и заметил, что получаю простой сбой входа в систему SQL для пользователя. Просто еще кое-что, чтобы проверить.
источник
Иногда это может произойти, если вы помещаете строку подключения в app.config неправильного проекта в Visual Studio.
Например, у меня возникла эта проблема в проекте EF 4.1 (выпущенная версия) + проекте службы данных WCF, и я заметил, что у меня не было строки подключения, указанной в проекте служб данных, где она использовалась.
источник
У меня была такая же ошибка, и на самом деле это была ошибка входа на указанный сервер. Я удалил атрибут «Integrated Security» из строки подключения конфигурации, и он сработал.
источник
У меня была такая же проблема, и я добавляю приведенный ниже код сразу после экземпляра моего контекста (загрузка по примеру)
источник
У меня была аналогичная проблема с приложением MvcMusicStore. Я изменил строку в Web.config с «Instance = true» на «Instance = false». Иногда это работает без этой настройки, но я не знаю, в чем разница. Чтение http://msdn.microsoft.com/en-us/library/ms254504.aspx действительно не помогло.
источник
По какой-то определенной причине разрешения EF не может создать соединение с базой данных. Я столкнулся с одной и той же проблемой всего один день. Наконец, я попробовал следующее решение, и оно сработало: a / Откройте IIS (я использую IIS 7) b / Откройте дополнительные настройки appool, который использовал веб-сайт (например, DefaultAppPool) c / Посмотрите на группу модели процесса, измените значение идентификатора в "Локальную систему"
Надеюсь, это сработает с вами.
источник
У меня была такая же проблема ...
решение, которое сработало для меня, было:
запустить инструмент настройки клиентской сети (введите cliconfg в Run)
и убедитесь, что TCP / IP включен.
источник
Я наконец его взломал - после небольшой погони за дикими гусями подумал, что это из-за разрешений.
Откровение: ИСПОЛЬЗУЙТЕ SQL PROFILER
(Примечание: я недавно перешел с EF6 на EF5)
Используя SQL Profiler, я быстро нашел последний SQL-запрос, выполненный перед сообщенной ошибкой:
SELECT TOP (1) [Project1].[C1] AS [C1], [Project1].[MigrationId] AS [MigrationId], [Project1].[Model] AS [Model] FROM ( SELECT [Extent1].[MigrationId] AS [MigrationId], [Extent1].[Model] AS [Model], 1 AS [C1] FROM [dbo].[__MigrationHistory] AS [Extent1] ) AS [Project1] ORDER BY [Project1].[MigrationId] DESC
Посмотрите на это - что-то связано с миграциями. Он смотрит в
__MigrationHistory
таблицу, которую я даже не осознавал, что она была создана (я уже уничтожил миграции в моем CSPROJ) и очистил это.Поэтому я вытаскиваю строки для этой таблицы и вижу, что она привязана к конкретной версии продукта (v6).
Я фактически понизил версию EF6 (которую я не собирался устанавливать в первую очередь) до EF5 (которая более совместима с лесами), и это когда начались проблемы.
Я предполагаю, что
Model (<Binary data>)
столбец не имеет обратной совместимости - отсюда иThe provider did not return a ProviderManifest instance
ошибка, поскольку он не смог его декодировать.Мне нечего было терять, я просто стер этот стол полностью и побежал,
Update-Database -Verbose
а затем снова заработал.Если вы работаете в продвинутой среде или уже работаете в производственной среде, удаление этой таблицы может не быть решением, но этот способ позволил мне сразу вернуться к работе.
источник
Add-Migration
иUpdate-Database -Verbose -Force
. вот ссылка на команду coding.abel.nu/2012/03/ef-migrations-command-referenceПри использовании Visual Studio 11 Beta с EF4.1 и ASP.NET MVC я чуть не вырвал волосы, пока не нашел
Чтобы решить свою проблему, я зашел в Application_Start и изменил
к
источник
Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");
добавили в мойMain
метод, теперь работает как шарм! Большое спасибо.Эта цитата из CodePlex , это сработало со мной (Visual Studio 2013 / MVC 5)
источник
Еще одна вещь, которую следует учитывать при использовании EF Code First, заключается в том, что иногда она не создает автоматически резервную базу данных для вашего класса DbContext. Решение состоит в том, чтобы добавить свою собственную строку подключения - вы можете использовать строку подключения, которая может присутствовать для обработки базы данных пользователей / регистрации, которая поддерживает Simple Membership Provider, в качестве шаблона. Наконец, вам нужно будет добавить конструктор по умолчанию для созданного вами класса DbContext:
Здесь имя строки подключения, введенное вами в файл web.config, используется для направления DbContext для создания базы данных. Изредка мне приходилось вручную создавать базу данных (в SQL Server Management Studio), что заставляло ее работать.
источник
У меня есть несколько проектов в решении, и я добавлял EF в каждый проект в разное время. На некоторых машинах он работал, а на некоторых не работал с вышеупомянутой ошибкой. Мне потребовалось некоторое время, чтобы заметить, что некоторые из моих проектов app.config имеют следующее:
Это нормально, если вы используете LocalDb (например, новый "sql express"), но совершенно неправильно, если у вас не установлен этот конкретный сервер и вы используете обычный SQL.
Решение: удалите указанный выше код.
источник
Это потому, что соединение с SQL-сервером не удалось.
Убедитесь, что учетная запись пользователя, под которой вы запускаете процесс, имеет доступ к SQL Server.
Если вы сгенерировали DbContext из родительского потока (например, с помощью внедрения зависимостей), а затем выдавали себя за другого пользователя, возникла бы эта ошибка. Решением было бы сгенерировать DbContext внутри нового потока или нового контекста олицетворения.
источник
Я просто закрыл все экземпляры Visual Studio и снова открыл свое решение.
Я не знаю, что произошло на самом деле, но у меня было одно и то же решение, открытое из двух разных локальных рабочих пространств (одно с моими локальными изменениями, другое с неизмененным исходным кодом репозитория). Я работаю с БД postgres, Entity Framework 6, Visual Studio 2013 и ASP.NET MVC 5.
источник
У меня была ошибка для структуры сущностей, но ни один из приведенных выше ответов не подошел к решению, которое, наконец, сработало.
Мои первые модели кода EntityFramework и DataContext находились в отдельном проекте от моего основного проекта WebAPI. Мой проект Entity Framework где-то по линии кодирования был установлен как запускаемый проект, и поэтому, когда я выполнял миграцию, я получал: «Поставщик не вернул строку ProviderManifestToken» ... проблема с подключением.
Оказывается, поскольку ConnectionString для БД находится в файле Web.config в основном проекте WebAPI, когда я выполнял миграцию, строка подключения не была получена. Установив проект WebAPI в качестве моего startProject, я смог успешно подключиться.
источник