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

EF 5. "Автоматическая миграция не была применена, поскольку это приведет к потере данных" - изменилось только название столбца

У меня есть:

AutomaticMigrationsEnabled = True
AutomaticMigrationDataLossAllowed = False

в моем файле конфигурации, а существующая модель:

Public Property ID() As Integer
Public Property ERP_ArticleCode() As String
Public Property description() As String

Все, что я сделал, это изменить третий столбец от "описания" до "am_description" и запустить "update-database -verbose", в результате чего "Автоматическая миграция не была применена, потому что это приведет к потере данных"!

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

4b9b3361

Ответ 1

Вы должны изменить свой метод вверх и вниз и заменить команды AddColumn и DropColumn на RenameColumn.

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

Ответ 2

Этот код ниже не нужен для запуска миграции:

AutomaticMigrationsEnabled = True
AutomaticMigrationDataLossAllowed = False

И, в соответствии с этой статьей (из entityframework codeplex), это ошибка EF, и вы можете игнорировать это с помощью атрибута -Force в вашей миграции.

Update-Database -Force

или

Update-Database -TargetMigration: X -Force

Он должен решить вашу проблему.

IMO, вы должны позволить EF решить, что делать с вашими столбцами, просто мое мнение.

Ответ 3

Я решил так: просто введите:

Обновление-База данных -Force

Ответ 4

Вы должны изменить строку

AutomaticMigrationDataLossAllowed = False

to

AutomaticMigrationDataLossAllowed = True

Примечание. Будьте осторожны, чтобы использовать true только в вашей среде разработки, поскольку это может привести к потере данных после развертывания для производства.