2012-02-23 88 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