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 チームは、デフォルト値を簡単に変更または削除/再作成することはできませんでした。