【问题标题】:Design question for not nullable enum and data with null values不可为空的枚举和具有空值的数据的设计问题
【发布时间】: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 设置了空值。

从设计的角度来看,什么应该是更好的解决方案:

  1. 更改模型以使 Color 可以为空,并在 UI 和 API 内部添加额外的验证以防止出现空值。
  2. 将空值添加到 Enum 本身。
  3. 为导入的数据分配一些默认值,颜色为空。

我不喜欢这些选项中的任何一个,但就设计而言,最好的选项是什么?

【问题讨论】:

  • 默认值是侵入性最小的,因为它既不改变模型也不改变枚举;但最终这个问题是基于意见的,答案会因情况而异。

标签: .net oop design-patterns database-design model


【解决方案1】:

Color 列中带有null 的记录有效地表示未知颜色的对象。因此,显而易见的做法是将Unknown 值添加到枚举Color。然后更改前端以允许显示但不保存这些对象,并将颜色设置为“未知”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多