【发布时间】:2020-05-27 02:31:38
【问题描述】:
在我的 Web 应用程序中,我使用具有 Enum 属性的模型。例如:
public class SomeObject
{
public Guid ID { get; set; }
public string Name { get; set; }
public Color Color { get; set; }
}
public enum Color
{
blue,
red
}
颜色是必填字段。使用基于该模型的 EF Core 创建了一个表,其中 Color 列不为空。
但是,我尝试导入表中的一些历史数据为 Color 设置了空值。
从设计的角度来看,什么应该是更好的解决方案:
- 更改模型以使 Color 可以为空,并在 UI 和 API 内部添加额外的验证以防止出现空值。
- 将空值添加到 Enum 本身。
- 为导入的数据分配一些默认值,颜色为空。
我不喜欢这些选项中的任何一个,但就设计而言,最好的选项是什么?
【问题讨论】:
-
默认值是侵入性最小的,因为它既不改变模型也不改变枚举;但最终这个问题是基于意见的,答案会因情况而异。
标签: .net oop design-patterns database-design model