9

Мы используем EF 5RC, сначала код с миграциями. Я чувствую, что это должен быть простой вопрос для ответа (я надеюсь). Есть ли хороший способ выяснить, что делает автоматическая миграция.Стратегия получения SQL для AutomaticMigrations

Я добавил миграцию с помощью команды добавления миграции. Я вызвал обновление базы данных, и все кажется прекрасным с этой миграцией. Теперь - я просто работаю Update-Database, как я обычно делаю, но со следующей ошибкой:

PM> update-database -Verbose 
Using StartUp project 'Web'. 
Using NuGet project 'DataAccess'. 
Specify the '-Verbose' flag to view the SQL statements being applied to the target database. 
Target database is: 'UserGroup' (DataSource: (localdb)\v11.0, Provider: System.Data.SqlClient, Origin: Configuration). 
No pending code-based migrations. 
Applying automatic migration: 201206301526422_AutomaticMigration. 
Automatic migration was not applied because it would result in data loss. 

Обратите внимание, я буду добавлять -Verbose варианта, и я попробовал еще раз с - Сценарий. Но я понятия не имею, к чему мы стремимся; и какой SQL - или то, что он думает, приведет к потере данных.

Я не хочу просто включать «разрешить потерю данных» здесь, но пытаюсь понять, как устранить эти миграции.

Спасибо заранее!

ответ

18

Просто запустите:

PM> Update-Database -Script -Force 

Это будет генерировать SQL и отображать его в окне, не запуская ее.

+0

Если я даю возможность позволяет потери данных, может он стирает все мои строки? Я добавил атрибут MaxLength в столбец, я знаю, что ни одна из строк в БД фактически не превышает эту длину, если я не против усечения. Таким образом, это означает, что потеря данных означает, или буквально удалит все строки из БД? – Shimmy

+2

@Shimmy не стирает ваши ряды. –

+0

Но это может привести к сокращению или сокращению столбцов –

9

Я получил эту ошибку на Azure после публиковать, но и не можешь использовать -Force, поэтому глобальное решение (и нет необходимости в -Force на местные тоже)

public Configuration() 
{ 
    AutomaticMigrationsEnabled = true; 
    AutomaticMigrationDataLossAllowed = true; // <-- THIS LINE 
} 
+0

, просто добавьте это в конструктор класса конфигурации, который наследуется от DbMigrationsConfiguration http://msdn.microsoft.com/en-us/library/hh829093(v=vs.103) .aspx –

+0

Спасибо, я застрял с проблемой публикации в Azure –

+1

Довольно опасно, чтобы позволить потерю данных через миграцию в производственной среде. –

Смежные вопросы