我正在开发一个ASP.NET MVC应用程序,设计域模型,使用(测试)新的EF Code First
功能.
我有一个活动实体可能有也可能没有截止日期,接近它的最佳方法是什么?
1物业:
public DateTime? Deadline {get; set;}
and check vs null before using
要么
2个属性:
public DateTime Deadline {get; set;}
public bool HasDeadline {get; set;}
起初我想到了第一个选项,但后来我开始考虑可能第二个选项对DB来说会更好……
这有什么最好的做法吗?
我会选择第一个选项.毕竟,它恰好是第二种形式的封装形式.
封装清楚地表明您只有一个逻辑值(或缺少逻辑值).在第二种形式中,您可以将属性视为完全独立,这在逻辑上并非如此.
就数据库而言,我希望第一种形式也同样容易…预测你在数据库中有一个可以为空的DATETIME字段,不是吗?它应该直接映射.