c# – 更好的设计/实践:Nullable属性或1值属性和1 bool“has”属性?

前端之家收集整理的这篇文章主要介绍了c# – 更好的设计/实践:Nullable属性或1值属性和1 bool“has”属性?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个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字段,不是吗?它应该直接映射.

猜你在找的C#相关文章