Alterando os valores padrão da coluna no código EF5 primeiro
Eu estou tentando usar o CF para criar um modelo para um banco de dados existente. Eu tenho uma coluna na qual esqueci de definir um valor padrão sensato. E em vez de comprometer a pureza da migração inicial, alterando-a, acabei de pensar em criar outra migração (é para isso que as migrações são, certo? :)
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));
}
Mas isso produzColumn already has a DEFAULT bound to it.
erro do SQL Server.
Como alguém altera um valor padrão usando migrações de CF? Ou, como alguém simplesmente remove um valor padrão (e subsequentemente o recria com um valor diferente)?
Editar:
Aqui está o SQL gerado:
ALTER TABLE [Config] ADD CONSTRAINT DF_DefaultTaxPerDollar DEFAULT 0.087 FOR [DefaultTaxPerDollar]
ALTER TABLE [Config] ALTER COLUMN [DefaultTaxPerDollar] [decimal](19, 5) NOT NULL
Acho que encontrei uma solução, para usar oSql()
método com algum SQL complexo inspirado poristo postar. O problema decorre do fato de que o SQL Server usa restrições para implementar padrões (OH! Como eu sinto falta do MySQL!) Com um nome gerado para a restrição. Assim, a equipe do Code First não poderia simplesmente alterar ou remover / recriar o valor padrão facilmente.