Подтвердить что ты не робот

Не удалось создать явный перенос, поскольку следующие явные миграции ожидаются

Я использую EF 6.1, и я включил первую миграцию кода в моем проекте

Enable-Migrations
Add-Migration InitializeDb -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4"
Update-Database  -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4" -verbose -script

Когда я укажу свои ConnectionString, ConnectionProviderName явно с помощью Add-Migration и Update-database в консоли диспетчера пакетов он работает правильно:

Add-migration updateXtable -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4"

но когда я использую Add-Migration без дополнительной информации:

add-migration updateXtable

Я получаю следующую ошибку:

Невозможно создать явный переход, поскольку ожидаются следующие явные миграции: [201408300955376_InitializeDb, 201408311028404_Test]. Примените ожидающие явные миграции, прежде чем пытаться генерировать новую явную миграцию.

Итак, я должен использовать следующую команду каждый раз, когда мне нужно обновить мою базу данных:

Add-Migration UpdateXTable -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4"
Update-Database  -ConnectionProviderName System.Data.SqlClient -ConnectionString "Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4" -verbose -script

Это мой проект (содержащий мой DbContext) app.config файл:

<?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" />
  </configSections>
 <entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory,  EntityFramework" />
 <providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
 </providers>
 </entityFramework>
 <connectionStrings>
 <add name="ERPContext" connectionString="Data Source=myServer;Initial Catalog=myDb;Persist Security Info=True;User ID=sa;password=******;application name = L4" providerName="System.Data.SqlClient" />
 </connectionStrings>

 <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
 </startup>   
</configuration>

Кто-нибудь знает, где проблема?

4b9b3361

Ответ 1

Наконец-то я нашел проблему! Как Мохамад Батайн сказал в этой теме (см. Ответы)

В вашем классе DbContext вам нужно указать конструктор базового класса с собственным именем для вашего SQL-источника. Например name = MyDBEntities

В другом слове я изменил существующий конструктор dbcontext

public MyDbContext()
{
} 

Для

public MyDbContext(): base("name=ERPContext")
{
} 

Ответ 2

Чтобы устранить эту проблему, я поменял свой проект по умолчанию на файл с app.config, содержащий правильную строку подключения.

Это должно было быть очевидным, поскольку система обнаруживала none перенесенных миграций - очевидный признак того, что она не находила БД, явная причина того, что она не могла найти строка подключения (как завершено OP).

"Оглядываясь назад - 20/20".

Ответ 3

Я тоже получал эту ошибку. В дополнение к правильной настройке проекта по умолчанию (как упоминалось ANeves), мне также пришлось установить проект со строкой подключения в качестве проекта StartUp в обозревателе решений. Только один раз, когда я правильно установил оба из них, ошибка исчезла.

Ответ 4

Мне удалось избавиться от сообщения, удалив соответствующую миграцию в моей папке Migrations (в Проводнике решений), затем добавьте новую миграцию и, наконец, обновите базу данных.

Ответ 5

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

Ответ 6

В моем случае IP-адрес моей рабочей станции не был добавлен в исключения брандмауэра SQL Server.

Ответ 7

В моем случае я отделил проект слоя данных и забыл изменить пространства имен в файле Configuration.cs и во всех файлах миграции.