Entity framework 实体框架迁移:转换十进制?使用默认值为空的十进制

Entity framework 实体框架迁移:转换十进制?使用默认值为空的十进制,entity-framework,ef-code-first,sql-server-ce,entity-framework-migrations,Entity Framework,Ef Code First,Sql Server Ce,Entity Framework Migrations,我得到SqlCeException。。。该列不能包含空值。[列名=小计 当我运行以下实体框架迁移时 public override void Up() { AlterColumn("BuildingOrders", "Subtotal", c => c.Decimal(nullable: false, precision: 18, scale: 2)); } 这是设置默认值的正确方法吗?似乎太简单了:) 在看到ruby on rails的一个问题后,我尝试了这个方

我得到
SqlCeException。。。该列不能包含空值。[列名=小计
当我运行以下实体框架迁移时

public override void Up()
{
    AlterColumn("BuildingOrders", "Subtotal",
        c => c.Decimal(nullable: false, precision: 18, scale: 2));
}
这是设置默认值的正确方法吗?似乎太简单了:)


在看到ruby on rails的一个问题后,我尝试了这个方法。

这种方法不起作用。您在数据库中设置了默认值,但它没有被使用。当映射列不可为null时,您不能在类中将属性定义为可为null。只有当您没有在该列中插入任何值,但EF始终插入val时,才会应用数据库中的默认值ue指向所有非数据库生成的列(反过来,数据库生成列的值无法在应用程序中定义),因此在这种情况下,您将属性定义为可空,EF inserts null EXPLICE=>exception。

Ok,我将编写一个方法将任何空值转换为0.00-谢谢
public override void Up()
{
    AlterColumn("BuildingOrders", "Subtotal",
        c => c.Decimal(nullable: false, precision: 18, scale: 2, defaultValue: 0));
}