c# - 如何将查找表映射到枚举?

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

假设我有以下 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 属性(我假设的字节类型),然后我公开我的枚举类型的另一个属性?

即。

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 是否仍然如此?如果是,我的做法对吗?

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

最佳答案

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

我已经看到 AlexJ 的一个很好的变通方法,它工作得很好(虽然代码量很大),http://blogs.msdn.com/b/alexj/archive/2009/06/05/tip-23-how-to-fake-enums-in-ef-4.aspx

我还听说下一版本的 EF4 中将提供此 native 枚举支持,但谁知道确切的发布时间。

关于c# - 如何将查找表映射到枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3648956/

相关文章:

c# - MQQueue 中的 PutReplyMessage 和 PutReportMessage 的用途是什么?

.net - 如何将窗口背景绑定(bind)到主题的窗口背景颜色?

asp.net-mvc - Entity Framework 代码优先多对多 NullReference

c# - 从 C# 中的字符串解析 PointF?

c# - 如何以编程方式保存用户设置?

c# - 在缓存中找不到元素 - 也许页面在查找后已更改 c#

c# - 使用 ASp.net MVC3 插入数据库后如何显示类似 "successfully Inserted"的警告消息

c# - Entity Framework 代码优先迁移总是尝试创建新数据库

c# - 显示月份名称的 DataAnnotation

entity-framework-4 - Web 应用程序中 Redis 的最佳对象生命周期策略是什么