首页 文章

实体框架 - WCF - 枚举?

提问于
浏览
0

我想知道人们在处理WCF服务时如何处理实体框架中缺乏Enum支持?

通常的做法似乎是将entity属性中的getter和setter声明为private,然后为该实体创建一个partial类并在其中声明enum属性 .

这一切都很好,但是对于WCF服务来说是一个问题 . 我需要客户端的Enum定义,并希望通过自动代理生成来实现 . 为此,我必须将DataMember属性添加到共享类中的Enum Property,因此它将包含在序列化过程中 .
但是,当我现在调用WCF方法时,它会序列化(int)和(Enum)属性,从而携带冗余数据并增加消息大小 . 处理此问题的最佳方法是什么?处理此方案的其他人如何处理?

谢谢,

汤姆

3 回答

  • 3

    我同意不应该通过WCF发送EF对象 . 通过这样做,您暴露了太多WCF服务背后的实现细节 .

    要限制您需要编写的代码量,以便于从EF对象转换为WCF服务公开的DTO / POCO,请查看Automapper .

  • 0

    我们不通过WCF发送EF对象 .

    我们将对象映射到DTO(数据传输对象)并通过WCF发送它们 .

    这将改变EF 4,其中支持POCO(普通旧CLR对象)

  • 0

    所以EF 4不支持Enum ...让我们找到其他解决方案 .

    假设你有一个 OrderStatus 枚举,如果你想遵循严格的数据库设计规则,你应该创建一个OrderStatus表 . 然后,您可以将信息添加到"enum"表中,例如:

    • Value(int或string)

    • 可本地化的描述

    然后,您将在引用它的表中创建一个外键 . 这是一个解决方案 .

    现在另一个是用复杂类型替换status id:

    http://devtalk.dk/CommentView,guid,d5dccc2a-5723-49b4-97d1-bf759b7f592d.aspx

相关问题