如何使用Entity Framework 4.1 Fluent API映射枚举?

时间:2011-09-20 19:16:49

标签: .net enums entity-framework-4.1

我在EF的表格之间有点迷失......就像其他自由世界一样,我真的需要在我的POCO中使用Enums。像我说的很多人一样,我会非常喜欢使用代码来映射Enums,因为我只是不喜欢那些图片。

我的困惑在于,我几乎每一篇文章都有相互矛盾的信息。更难以筛选出人们已经发布的自定义实现或“扩展”来尝试解决EF的不足。

EF June CTP宣布支持枚举和空间类型,但似乎支持仅在使用设计器时出现?此外,是EF 4.1 Update 1的6月CTP部分还是RTM?

如果有一种方法可以使用Fluent API支持Enums,我会感激任何可以帮助我或引导我朝正确方向前进的人!

谢谢,杰森

2 个答案:

答案 0 :(得分:4)

目前的EF版本不支持枚举。它们在2011年6月的CTP中受到EDMX和代码映射的支持,但CTP没有生产版本 - 它不是EF 4.1 Update 1的一部分,也不是EF 4.2的升级版。 Imho如果我们非常幸运,它将成为.NET 4.5的一部分。

现在使用枚举的最简单方法是使用两个属性:mapped int和非映射的枚举属性从映射的int转换:

public class Test
{
    public int EnumValue { get; set; }
    public EnumType Value 
    {
        get { return (EnumType)EnumValue; }
        set { EnumValue = (int)value; }
    }
}

使用此方法时,不能在Linq中使用枚举实体查询。

答案 1 :(得分:0)

此阶段Enum不支持EF。最新的4.2版本只有错误修复。似乎Enum支持将在EF 5中出现,它将与.Net 4.5一起发布。请阅读http://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/67a9247e-eccf-4b14-9da1-db630e408ae8