【问题标题】:Preventing Entity Framework from serializing EntityKey, EntitySetName, etc防止实体框架序列化 EntityKey、EntitySetName 等
【发布时间】:2013-06-21 19:40:13
【问题描述】:

我有一个重新调整实体框架对象的网络服务。在调用端,我除了读取信息什么都不做,所以我不需要这些实体框架序列化属性。返回实体框架对象时是否可以去掉以下序列化文本?

<EntityKey> <EntitySetName>ClassName</EntitySetName> <EntityContainerName>MyEntities</EntityContainerName> -<EntityKeyValues> -<EntityKeyMember> <Key>ClassID</Key> <Value xsi:type="xsd:int">9903</Value> </EntityKeyMember> </EntityKeyValues> </EntityKey>

【问题讨论】:

    标签: entity-framework serialization


    【解决方案1】:

    我已经阅读了 EF 如何要求我制作一堆 POCO 等,这需要我做很多工作。我决定再考虑一下,并对 Entity 对象进行了一些挖掘。在看到它没有被密封后,我创建了一个继承自该类的自定义类,并使用 XmlIgnore 属性向 EntityKey 字段添加了一个“新”语句。回到我的 EF 设计器类,我将所有类改为从 CustomEntityObject 继承,瞧!,没有不必要的字段。这是否是未来的证据,我对此表示怀疑。但是对于这个项目,它运行良好,并且不需要我为我的所有课程编写 DTO。希望其他人觉得它有用:

    public class CustomEntityObject : EntityObject {
        [DataMember]
        [Browsable(false)]
        [XmlIgnore]
        public new EntityKey EntityKey { get; set; }
    }
    

    【讨论】:

    • 无法从服务器更新架构,但很容易修复。
    【解决方案2】:

    据我所知,这是不可能的。如果您使用 EntityObject 基本实体,您将始终在 Web 服务结果中拥有此数据。如果您不想公开它们,则必须使用 DTO(仅传输您想要的数据的自定义对象),或者您必须使用不包含 EntityKey 和其他 EF 相关属性的 EFv4 和 POCO。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      • 2012-02-08
      • 1970-01-01
      • 2010-11-10
      • 2011-05-02
      • 1970-01-01
      相关资源
      最近更新 更多