Изменение значений по умолчанию для столбца в EF5 Code First
Я пытаюсь использовать CF для построения модели для существующей базы данных. У меня есть столбец, в котором я забыл установить нормальное значение по умолчанию. И вместо того, чтобы поставить под угрозу чистоту первоначальной миграции, изменив ее, я просто решил, что я создам другую миграцию (для чего нужны миграции, верно? :)
public override void Up()
{
AlterColumn("Config", "DefaultTaxPerDollar", c => c.Decimal(nullable: false, precision: 19, scale: 5, defaultValue: 0.087m));
}
public override void Down()
{
AlterColumn("Config", "DefaultTaxPerDollar", c => c.Decimal(nullable: false, precision: 19, scale: 5, defaultValue: 0.0m));
}
Но это производитColumn already has a DEFAULT bound to it.
ошибка с SQL Server.
Как изменить значение по умолчанию с помощью миграций CF? Или как можно просто удалить значение по умолчанию (и впоследствии заново создать его с другим значением)?
Edit:
Вот сгенерированный SQL:
ALTER TABLE [Config] ADD CONSTRAINT DF_DefaultTaxPerDollar DEFAULT 0.087 FOR [DefaultTaxPerDollar]
ALTER TABLE [Config] ALTER COLUMN [DefaultTaxPerDollar] [decimal](19, 5) NOT NULL
Я думаю, что, возможно, нашел решение, чтобы использоватьSql()
метод с некоторым сложным SQL вдохновленэтот сообщение. Проблема связана с тем фактом, что SQL Server использует ограничения для реализации значений по умолчанию (OH! Как я скучаю по MySQL!) С сгенерированным именем для ограничения. Поэтому команда Code First не могла просто изменить или удалить / заново создать значение по умолчанию.