Ответ 1
Вы должны изменить свой метод вверх и вниз и заменить команды AddColumn и DropColumn на RenameColumn.
EF не может определить, переименовываете ли вы столбец или хотите удалить его и создать новый.
У меня есть:
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, не так ли? Я что-то делаю неправильно?
Вы должны изменить свой метод вверх и вниз и заменить команды AddColumn и DropColumn на RenameColumn.
EF не может определить, переименовываете ли вы столбец или хотите удалить его и создать новый.
Этот код ниже не нужен для запуска миграции:
AutomaticMigrationsEnabled = True
AutomaticMigrationDataLossAllowed = False
И, в соответствии с этой статьей (из entityframework codeplex), это ошибка EF, и вы можете игнорировать это с помощью атрибута -Force
в вашей миграции.
Update-Database -Force
или
Update-Database -TargetMigration: X -Force
Он должен решить вашу проблему.
IMO, вы должны позволить EF решить, что делать с вашими столбцами, просто мое мнение.
Я решил так: просто введите:
Обновление-База данных -Force
Вы должны изменить строку
AutomaticMigrationDataLossAllowed = False
to
AutomaticMigrationDataLossAllowed = True
Примечание. Будьте осторожны, чтобы использовать true только в вашей среде разработки, поскольку это может привести к потере данных после развертывания для производства.