0

SqlCeException ... The column cannot contain null values. [ Column name = Subtotal 当我运行以下实体框架迁移时,我得到了。

public override void Up()
{
    AlterColumn("BuildingOrders", "Subtotal",
        c => c.Decimal(nullable: false, precision: 18, scale: 2));
}

这是设置默认值的正确方法吗?这似乎太容易了:)

public override void Up()
{
    AlterColumn("BuildingOrders", "Subtotal",
        c => c.Decimal(nullable: false, precision: 18, scale: 2, defaultValue: 0));
}

在看到关于 ruby​​ on rails的类似问题后,我尝试了这个。

4

1 回答 1

1

这种方式行不通。您在数据库中设置了默认值,但未使用它。当映射列不可为空时,您不能在类中将属性定义为可空。仅当您不向该列中插入任何值时才应用数据库中的默认值,但 EF 始终将值插入到不是数据库生成的所有列中(反过来,数据库生成的列的值不能在应用程序中定义)所以在这种情况下您将您的属性定义为可为空,并且 EF 显式插入 null => 异常。

于 2012-02-23T20:53:10.270 回答