2013-03-20 69 views
2

在創建實體並在.NET中設置其實現(有效枚舉)屬性時,我需要一些關於最佳實踐的建議。作爲枚舉或對象的.NET實體屬性

舉一個簡單的例子,假設我有一個名爲 '待辦事項' 的對象,它有三個屬性:
ID(INT)
文本(字符串)
國家(NotStarted,inProgress,則完成)

我的待辦事項對象將存儲在一個SQL Server數據庫中,'Type'屬性存儲爲int。國有財產不會有任何其他信息或與之相關的方法,只是標記了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類?還是有更好的完全不同的方式來做到這一點?

除了您認爲在這種情況下實現此目標的最佳方法之外,解決此類問題的行業標準方法是什麼?提前致謝。

回答

2

從版本5(帶有.NET 4.5)開始,實體框架支持enum屬性。請閱讀Enum Support - Code FirstEnumeration Support in Entity Framework瞭解更多信息。

這是迄今爲止最容易解決您的問題。

你的代碼看起來不錯。我認爲你是在正確的軌道上,但這裏的一些小建議:

  • 標準的做法是每.cs文件,包括枚舉定義一種類型,所以我建議移動enum TodoStateTodoState.cs
  • TodoState作爲一個名字的作品,但我認爲​​是更多的描述它應該代表什麼。
+2

應該注意的是,EF5僅支持.NET Framework 4.5或更高版本(Visual Studio 2012)中的枚舉。 VS2010上的EF5不支持它們(技術上它是EF4.4,但它在安裝5時已安裝) – 2013-03-20 19:19:02

+1

@MystereMan感謝您指出這一點。 – 2013-03-20 19:24:50

+2

@MystereMan然而,EF6將支持.NET上的枚舉4 http://blogs.msdn.com/b/adonet/archive/2012/10/30/ef6-alpha-1-available-on-nuget.aspx – Phil 2013-03-20 19:26:46