可空类型和SQL

时间:2018-06-26 20:32:29

标签: c# sql-server entity-framework linq-to-entities nullable

例如,我们有一个这样的模型:

public class Trip : BaseEntity, ITrackChanges
{
    public string UniqueHash { get; set; }

    public string Description { get; set; }

    public string InternalNumber { get; set; }

    public DateTime ScheduledDateUtc { get; set; }

    public DateTime LastDeliveryDateUtc { get; set; }

    public decimal? CalculatedDistance { get; set; }

    public decimal? FreightAmount { get; set; }

    public decimal? SellAmount { get; set; }

    public decimal? Amount { get; set; }

    public decimal? Tolls { get; set; }

}

我们可以看到许多十进制可为空的属性。我认为可以设置此属性,但可以不设置它并且它是有效的!这意味着Trip可以没有CalculatedDistance,例如,可以在将来(或永远不会)计算和保存此属性。我将此实体类用作代码第一类,以通过实体框架生成SQL。它将被创建为

[CalculatedDistance] [decimal](18, 2) NULL,

而且,在我看来,这是正确的。然后我们可以使用此值,总和,其他计算操作等执行任何操作

我的团队负责人说,我们根本不应该拥有可为空的类型,而应存储0而不是null。但是0是值,如果我们使用0(-1,-100,-100500等),那么我们实际上使用的是幻数!我们应该记住,0不是值,而是意味着未设置该值!我们已经有“未设置值”,它为NULL。他认为,要使具有空值类型的SQL to Entities请求变得困难。但是我对可空类型从来没有任何问题。

如何正确执行?

0 个答案:

没有答案
相关问题