例如,我们有一个这样的模型:
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请求变得困难。但是我对可空类型从来没有任何问题。
如何正确执行?