实体框架实体中的枚举类型属性?

时间:2010-07-27 07:02:02

标签: entity-framework enums

有没有办法可以将生成的实体映射到枚举?

我的意思很简单:

class Person
{
    RelationshipStaus RelationshipStatus { get; set; }
}

enum RelationshipStatus : byte
{
    Single,
    Married,
    Divorced
}

DB中的属性RelationshipStatus是一个简单的字节,我希望在我的项目中它应该是一个枚举。

3 个答案:

答案 0 :(得分:4)

不幸的是,你不能,至少不能直接。为方便起见,您可以创建一个访问器,将值转换为枚举类型:

public int RelationshipStatusInt { get; set; }

public RelationshipStatus RelationshipStatus
{
    get { return (RelationshipStatus)RelationshipStatusInt; }
    set { RelationshipStatusInt = (int)value; }
}

但是,您无法在Linq到EF查询中使用该属性,因为它不会映射到数据库列(但您可以在Linq to Objects查询中使用它)。

另一种解决方案被描述为here,但感觉有点尴尬......

答案 1 :(得分:2)

正如托马斯所说,没有解决方案。

我只是推荐那些在EF中使用枚举的用户,并投票支持此连接:http://data.uservoice.com/forums/72025-ado-net-entity-framework-ef-feature-suggestions/suggestions/1015335-support-for-enums

答案 2 :(得分:0)

EF≥5时支持枚举。

请参阅this