防止Entity Framework序列化EntityKey,EntitySetName等

4

我有一个webservice,返回的是实体框架对象。在调用方面,我只需要读取信息,因此我不需要这些实体框架序列化属性。是否可以在返回实体框架对象时删除以下序列化文本?

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

8

我已经了解了EF需要我制作一堆POCO等内容,这需要我做很多工作。我决定再考虑一下,并对Entity对象进行了一些探索。看到它并没有被密封,我创建了一个继承自该类的自定义类,并在EntityKey字段中添加了'new'语句和XmlIgnore属性。回到我的EF设计师类,我将所有类都改为继承自CustomEntityObject,就完成了,不需要不必要的字段。是否适用于将来,我还是有疑问的。但对于这个项目来说,它非常有效,并且不需要为我的所有类编写DTOs。希望其他人也会发现它有用:

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

无法在从服务器更新模式后生存,但很容易修复。 - Vaiden

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接