【问题标题】:Entity Framework making double a nullable property实体框架使双重可空属性
【发布时间】:2018-06-02 15:37:20
【问题描述】:

我有一个名为TotalVolume 的属性,它是Double。在构建数据库时的代码优先方法中,属性TotalVolume 默认具有Not Null 值。我想让属性TotalVolume 也接受Null 值。

我用的是FluentAPI,我做的改动如下:

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

当我Add-Migration 时出现以下错误:

实体类型“Employee”的属性“TotalVolume”不能标记为可为空/可选,因为该属性的类型是“double”,它不是可为空的类型。任何属性都可以标记为不可空/必需,但只有可空类型且不属于主键的属性才能标记为可空/可选。

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

    public double? TotalVolume{ get; set; }

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

【问题讨论】:

  • 你的意思是付款还是总量?
  • 错字应该是 TotalVolume

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


【解决方案1】:

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

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

【讨论】:

  • 好的。你知道我怎样才能让属性 TotalVolume 允许 Nulls 吗?
  • 好的,我最初的问题是如何让双精度值 (TotalVolume) 接受空值?你知道我该怎么做吗?
  • @Illep 看起来不错。检查以这种方式创建的数据库中的列是否为 Nullable。在 SQL 中,将浮点数设置为 null 的功能不会更改列的类型。这是该列上的一个属性。
  • @Illep 您是否尝试过插入一个 TotalVolume 设置为 null 的行?
  • 在SQL管理工作室中,通常会在侧面打勾,表示是否接受null。目前刻度线已关闭。
猜你喜欢
  • 2012-04-22
  • 2018-09-05
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-03
  • 2012-05-29
相关资源
最近更新 更多