2014-01-28 26 views
0

嗨我是POCO的新成員,我想知道是否有可能將表格映射爲枚舉。你看我的簡單示意圖:在POCO中輸入Enum的表格EF

http://www.jonataspiazzi.xpg.com.br/outpost/diagram02.png

UserType代表類型列表,很像在C#代碼中的枚舉類型。所以我想要生成一個類型爲enum的類。

事情是這樣的:

[Table("User")] 
public class User 
{ 
    public int UserId { get; set; } 

    public string Name { get; set; } 

    [ForeignKey("???")] 
    public UserType Type { get; set; } 
} 

[Table("UserType")] 
public enum UserType 
{ 
    [Description("Administrator")] 
    Administrator = 1, 

    [Description("Operator")] 
    Operator = 2, 

    [Description("Consultor")] 
    Consultor = 3 
} 

可能地圖像這樣的代碼表?
* ps:這段代碼不正確,它只是一種嘗試解釋我的問題的方法。

回答

0

不,不可能。實體應該是引用類型(枚舉是值類型),它應該有id屬性。枚舉只是一組命名常量。沒有id屬性。

解決方法 - 你可以保存在表User整數值可以映射到您的枚舉:

public class User 
{ 
    public int UserId { get; set; } 
    public string Name { get; set; } 
    public UserType Type { get; set; } 
} 

public enum UserType 
{ 
    Administrator = 1, 
    Operator = 2, 
    Consultor = 3 
} 

如果您正在使用EF 4,那麼你應該用於映射到數據庫列創建User類整數屬性,以及未映射但通過整數屬性計算的枚舉屬性:

[Column("UserType")] 
public int UserTypeValue { get; set; } 

[NotMapped] 
public UserType Type 
{ 
    get { return (UserType) UserTypeValue; 
    set { UserTypeValue = (int)value; 
}