假设我有以下2个SQL表:
富
Column DataType
---------------------------
Title NVARCHAR(20)
Body NVARCHAR(MAX)
FooTypeId TINYINT
FooType
Column DataType
--------------------------
FooTypeId TINYINT
Name NVARCHAR(10)
现在,我正在使用Entity Framework 4.0以及自定义数据上下文和POCO实现。
我如何在设计师和我的POCO上映射这个?
我是否必须创建一个名为“FooTypeId”的POCO属性(字节i假设),然后我公开我的枚举类型的另一个属性?
即
public class Foo
{
public byte FooTypeId { get; set; } // for ORM - do i need this??
public FooType FooType // for most querying operations
{
get
{
return (FooType)this.FooTypeId;
}
set
{
this.FooTypeId = (int)value;
}
}
}
public enum FooType
{
Blah = 1,
Foo = 2,
Bar = 3
}
目前,我的设计师甚至没有 FooType 表,因为我想我可以尝试将其表达为Foo属性上实际FooTypeId的枚举。 或者我应该在mapper上创建一个“Navigational Property”,然后在我的POCO中定义它?
我读过几年前的线程(EF1)说“EF不支持枚举”,EF4的情况是否仍然如此?如果是的话,我正在做什么?
我有点迷失在这里,一些指导将不胜感激!
答案 0 :(得分:7)
目前,EF4本身不支持枚举。
我看过AlexJ的一个很好的解决方法,效果很好(尽管代码很重),http://blogs.msdn.com/b/alexj/archive/2009/06/05/tip-23-how-to-fake-enums-in-ef-4.aspx
我也听说过这个本机枚举支持将在EF4的下一个版本中出现,但是谁知道这个版本何时会发布。