什么是更好的设计/实践:可空房产或1价值房产和1布尔"有"属性?

Fra*_*ega 6 c# asp.net-mvc data-modeling code-first

我正在开发一个ASP.NET MVC应用程序,设计域模型,使用(测试)新的EF Code First功能.

我有一个活动实体可能有也可能没有截止日期,接近它的最佳方法是什么?

1物业:

public DateTime?  Deadline {get; set;}
and check vs null before using
Run Code Online (Sandbox Code Playgroud)

要么

2个属性:

public DateTime Deadline {get; set;}
public bool HasDeadline  {get; set;}
Run Code Online (Sandbox Code Playgroud)

起初我想到了第一个选项,但后来我开始考虑可能第二个选项对DB来说会更好......

这有什么最好的做法吗?

Jon*_*eet 10

我会选择第一个选项.毕竟,它恰好是第二种形式的封装形式.

封装清楚地表明您只有一个逻辑值(或缺少逻辑值).在第二种形式中,您可以将属性视为完全独立,这在逻辑上并非如此.

就数据库而言,我希望第一种形式也同样容易...预测你在数据库中有一个可以为空的DATETIME字段,不是吗?它应该直接映射.