在创建实体并在.NET中设置其(有效枚举)属性时,我需要一些关于最佳实践的建议。
举一个简单的例子,假设我有一个名为'Todo'的对象,它有三个属性:
ID(int)
文字(字符串)
State(NotStarted,InProgress,Complete)
我的Todo对象将存储在SQL Server数据库中,“Type”属性存储为int。 State属性不会有任何与之相关的其他信息或方法,只是为了标记Todo实例的完整性。
我应该在Todo.cs中创建一个枚举(在Todo类之外),如下所示:
public enum TodoState
{
NotStarted = 0,
InProgress = 1,
Complete = 2
}
之后,我可以创建我的Todo课程:
public class Todo
{
public int Id { get; set; }
public string Text { get; set; }
public TodoState State { get; set; }
}
或者我应该创建一个具有内部枚举和静态构造函数的TodoState类?或者有更好的完全不同的方式吗?
除了您认为在这种情况下实现此目标的最佳方式之外,处理此类问题的行业标准方法是什么?提前谢谢。
答案 0 :(得分:2)
从版本5开始(使用.NET 4.5),实体框架支持enum
属性。有关详细信息,请阅读Enum Support - Code First和Enumeration Support in Entity Framework。
这是到目前为止解决问题的最简单方法。
您的代码看起来很不错。我认为你走的正确,虽然这里有一些小建议:
.cs
文件定义一种类型,包括枚举,因此我建议将enum TodoState
移至TodoState.cs
。TodoState
作为名称有效,但我认为CompletionState
更能描述它应该代表什么。