Ответ 1
Нет. Миграции не поддерживают полностью поддержку изменений перечисления, поскольку он не обновляет значения базы данных, чтобы отражать изменения, такие как измененный порядок, добавления или удаления.
Добавление значений перечисления при сохранении порядка не будет иметь эффекта. Фактически, это даже не приведет к ошибке изменения модели поддержки.
Если порядок перечисления CarType
изменяется, данные базы данных будут фактически недействительными. Исходные значения int
сохраняются, но результаты перечисления будут ошибочными.
Для обеспечения такого типа изменений потребуется ручная обработка данных базы данных. В этом конкретном примере пользовательский SQL должен быть запущен, который изменяет значения столбца Type
в соответствии с изменениями перечисления:
public partial class CarTypeChange : DbMigration
{
public override void Up()
{
// 1 now refers to "VAN", and 2 now refers to "Truck"
Sql("Update cars Set [Type] = 2 Where [Type] = 1");
}
public override void Down()
{
Sql("Update cars Set [Type] = 1 Where [Type] = 2");
}
}
Приложение: я задал еще один вопрос, связанный с этим: Обработка изменений перечисления в Entity Framework 5