c# - 什么是更好的设计/实践 : Nullable property or 1 value property and 1 bool "has" property?

标签 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

2 个属性:

public DateTime Deadline {get; set;}
public bool HasDeadline  {get; set;}

起初我想到了第一个选项,但后来我开始考虑也许第二个选项对于数据库来说会更好......

这方面有什么最佳实践吗?

最佳答案

我会选择第一个选项。毕竟,它正是第二个的封装形式。

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

就数据库而言,我希望第一个表单也一样简单……假设您在数据库中会有一个可为空的 DATETIME 字段,不是吗?它应该直接映射。

关于c# - 什么是更好的设计/实践 : Nullable property or 1 value property and 1 bool "has" property?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3697989/

相关文章:

database - Cassandra 建模问题

sql - 推荐用于标记或标记的 SQL 数据库设计

c# - 捕捉零行已更新

C# Automapper 如何将一些逻辑应用于成员

c# - 重定向到另一个 Controller

c# - Razor 缺少匹配的结束标记

asp.net - ASP.NET vNext 如何处理 config.json 中的缓存、压缩和 MimeMap?

javascript - JavaScript 对象需要封装吗?

c# - 如何从客户端保护密码?是否需要或 HTTPS/SSL 就足够了?

c# - 不确定如何在集合上运行Where来返回集合