Я пытаюсь использовать 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, созданным this. Проблема связана с тем, что SQL Server использует ограничения для реализации значений по умолчанию (OH! Как я пропустил MySQL!) С сгенерированным именем для ограничения. Поэтому команда Code First не могла просто легко изменить или удалить/воссоздать значение по умолчанию.