小编Hir*_*ind的帖子

更改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));

}

Run Code Online (Sandbox Code Playgroud)

但是这会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
Run Code Online (Sandbox Code Playgroud)

我想我可能已经找到了一个解决方案,将这个Sql()方法与这个帖子启发的一些复杂的SQL 一起使用.问题源于这样一个事实:SQL Server使用约束来实现默认值(OH!我多么想念MySQL!),并为约束生成了名称.因此,Code First团队无法轻易地更改或删除/重新创建默认值.

c# ef-migrations entity-framework-5

11
推荐指数
2
解决办法
5678
查看次数

标签 统计

c# ×1

ef-migrations ×1

entity-framework-5 ×1