【问题标题】:How to map lookup table to enum?如何将查找表映射到枚举?
【发布时间】:2011-04-08 14:48:03
【问题描述】:

假设我有以下 2 个 SQL 表:

Foo

Column        DataType
---------------------------
Title         NVARCHAR(20)
Body          NVARCHAR(MAX)
FooTypeId     TINYINT

FooType

Column        DataType
--------------------------
FooTypeId     TINYINT
Name          NVARCHAR(10)

现在,我使用带有自定义数据上下文和 POCO 实现的 Entity Framework 4.0。

如何将其映射到设计师和我的 POCO 上?

我是否必须创建一个名为“FooTypeId”的 POCO 属性(我假设为字节类型),然后公开我的枚举类型的另一个属性?

即。

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 的枚举。 还是我应该在映射器上创建一个“导航属性”,然后在我的 POCO 中定义它?

我读过几年前 (EF1) 的线程说“EF 不支持枚举”,EF4 仍然是这种情况吗?如果是,我做的对吗?

我有点迷路了,非常感谢一些指导!

【问题讨论】:

标签: c# .net entity-framework-4 enums poco


【解决方案1】:

目前,EF4 本身不支持枚举。

我看到 AlexJ 的一个很好的解决方法,效果很好(虽然代码很繁重),http://blogs.msdn.com/b/alexj/archive/2009/06/05/tip-23-how-to-fake-enums-in-ef-4.aspx

我还听说这种原生枚举支持将在 EF4 的下一个版本中提供,但谁知道具体何时发布。

【讨论】:

  • 哇,这是相当繁重的代码,但仍然是一个解决方案。谢谢。
  • 它将在 .NET 4.5 中,参见 data.uservoice
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多