.NET实体属性作为枚举或对象

时间:2013-03-20 19:04:44

标签: c# .net model data-access-layer object-model

在创建实体并在.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类?或者有更好的完全不同的方式吗?

除了您认为在这种情况下实现此目标的最佳方式之外,处理此类问题的行业标准方法是什么?提前谢谢。

1 个答案:

答案 0 :(得分:2)

从版本5开始(使用.NET 4.5),实体框架支持enum属性。有关详细信息,请阅读Enum Support - Code FirstEnumeration Support in Entity Framework

这是到目前为止解决问题的最简单方法。

您的代码看起来很不错。我认为你走的正确,虽然这里有一些小建议:

  • 标准做法是为每个.cs文件定义一种类型,包括枚举,因此我建议将enum TodoState移至TodoState.cs
  • TodoState作为名称有效,但我认为CompletionState更能描述它应该代表什么。