我正在尝试创建一个系统的POC,它允许您创建和修改最终在使用前端的应用程序中使用的枚举。像动态枚举一样。
例如,在假设的错误跟踪器应用程序中,我们可以拥有status
枚举,其值可以是open
,accepted
和closed
。所有这些枚举(及其相应的值)都可以通过UI实时更改,因此管理员可以提供新的reassigned
值(例如,通过管理员页面)在应用程序的生命周期中的某个地方。也可以创建新的枚举,这些枚举又有自己的值(例如,complexity
枚举。)
我目前正在设想的方式是,我将拥有一个Enumeration
类,其中1:*
类具有EnumerationValue
个参考。
public class Enumeration {
public string Name { get; set; }
public ICollection<EnumerationValue> Values { get; set; }
}
public class EnumerationValue {
public string Name { get; set; }
public string Description { get; set; }
}
这很容易。当我开始创建实际使用这些动态枚举的实体时,我遇到了麻烦。
假设我正在创建BugRecord
实体,因此具有Status
属性。按照上面的逻辑,我必须按照以下方式编写:
public class BugRecord {
public EnumerationValue Status { get; set; }
}
但考虑到我可以有很多不同的Enumeration
s(以及EnumerationValue
s),我是否有办法将BugRecord.Status
值限制为仅EnumerationValue
s在状态Enumeration
?如果不是,你会怎么建议我解决这类问题?
答案 0 :(得分:2)
创建第三个Entity / JoinTable EnumerationChoice并使用它将BugRecord映射到EnumerationValue
public class EnumerationChoice {
public Enumeration EnumerationCategory { get; set; }
public EnumerationValue Value { get; set; }
}
BugRecord现在变为:
public class BugRecord {
public EnumerationChoice BugType { get; set; }
public EnumerationChoice Status { get; set; }
}
现在的数据如下:
BugRecord:
EnumerationChoice:
-BugType
-BugTypeValue1
EnumerationChoice:
-Status
-Open
这样,当您尝试填充EnumerationChoice时,可以引用EnumerationCategory来获取分配给它的有效EnumerationValues。