实体框架使双重可空属性

时间:2018-06-02 07:03:01

标签: c# entity-framework ef-fluent-api

我有一个名为TotalVolume的属性Double。在构造数据库的代码优先方法中,属性TotalVolume默认具有Not Null值。我想要使​​属性TotalVolume接受Null值。

我正在使用FluentAPI,我所做的更改如下:

        modelBuilder.Entity<Employee>()
            .Property(p => p.TotalVolume)
            .IsRequired(false);

Add-Migration时出现以下错误:

  

实体类型'Employee'上的属性'TotalVolume'不能标记为nullable / optional,因为属性的类型是'double',它不是可空类型。任何属性都可以标记为不可为空/必需,但只有可空类型的属性和不属于主键的属性可以标记为可空/可选。

此后,我尝试了以下方法,我在Employee模型中进行了以下更改。

    public double? TotalVolume{ get; set; }

但是,当我更新数据库时,TotalVolume的数据类型已更改为float。我希望数据类型仍然保持为double

1 个答案:

答案 0 :(得分:0)

SQL中的

float是一个64位的值,对应于.Net中的double,所以它似乎按预期工作。

实体框架映射这些类型,使它们具有相同的含义,但它们并不要求它们具有相同的名称。