我在EF的表格之间有点迷失......就像其他自由世界一样,我真的需要在我的POCO中使用Enums。像我说的很多人一样,我会非常喜欢使用代码来映射Enums,因为我只是不喜欢那些图片。
我的困惑在于,我几乎每一篇文章都有相互矛盾的信息。更难以筛选出人们已经发布的自定义实现或“扩展”来尝试解决EF的不足。
EF June CTP宣布支持枚举和空间类型,但似乎支持仅在使用设计器时出现?此外,是EF 4.1 Update 1的6月CTP部分还是RTM?
如果有一种方法可以使用Fluent API支持Enums,我会感激任何可以帮助我或引导我朝正确方向前进的人!
谢谢,杰森
答案 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