2012-02-23 43 views
8

這裏是一個模式:如何解釋枚舉類型與EF代碼優先

Public class Person 
{ 
    [Key] 
    Public int PersonId { get; set: } 
    Public int Age { get; set; } 
    Public ColorEnum FavoriteColor { get; set; } 
} 

Public Enum ColorEnum 
{ 
    Red = 1, 
    Green = 2, 
    Blue = 3 
} 

是否有可能對實體框架代碼第一次使用的人模型來生成相應的表?怎麼樣ColorEnum類型?

謝謝

回答

11

EF 4.3不支持枚舉。但是已經宣佈Enum support is coming with EF 5,這是與.NET 4.5一起推出的。要使用Code-First處理枚舉,目前您需要執行以下操作:

Public class Person 
{ 
    [Key] 
    Public int PersonId { get; set: } 
    Public int Age { get; set; } 

    public int FavoriteColorValue{ get; set;} 
    [NotMapped] 
    Public ColorEnum FavoriteColor 
    { 
     get{ return (ColorEnum)FavoriteColorValue; } 
     set{ FavoriteColorValue = (int)value; } 
    } 
} 

Public Enum ColorEnum 
{ 
    Red = 1, 
    Green = 2, 
    Blue = 3 
} 
+0

非常感謝。 – Bronzato 2012-02-23 18:42:18

+0

您應該使用NotMappedAttribute修飾FavoriteColor以確保升級到EF5 +時的兼容性。如果沒有,你可能會發現你最終在你的數據庫中有兩列。 – 2012-08-05 13:28:20

+0

@flem好點。我將編輯答案以包含它。 – Sorax 2012-08-06 18:04:28