Изменение значений столбцов по умолчанию в 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? Или как можно просто удалить значение по умолчанию (и впоследствии повторно -создать его с другим значением )?

Изменить:

Вот сгенерированный 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 использует ограничения для реализации значений по умолчанию (О! как я скучаю по MySQL! )со сгенерированным именем ограничения. Таким образом, команда Code First не могла просто изменить или удалить/повторно -создать значение по умолчанию.

11
задан HiredMind 15 August 2012 в 18:17
поделиться