【发布时间】:2011-10-25 15:34:11
【问题描述】:
我一直在阅读有关在实体框架上下文中使用 Linq 对实体和不同可能的序列化器进行序列化的实体图:Binary、XmlSerializer 和 DataContractSerializer。 据我了解,二进制和 XmlSerializer 序列化没有关系的实体。如果关系被序列化,由于生成的 xml 文件结构的性质(对于 XmlSerializer),它会导致问题。 除非禁用延迟加载,否则 DataContractSerializer 会在整个深度中序列化图形。
我的问题是:我想序列化图表的一部分。例如,如果我有一个实体 A 和三个相关的实体 B、C 和 D,则只有 B 和 D 会用 A 序列化。我想使用 DataContractSerializer。如果我删除不需要的导航属性的 [DataMemberAttribute] 会起作用吗?
【问题讨论】:
-
我将延迟加载属性保持为 true,并使用有限的图表进行了尝试:Northwind 数据库:订单(主要实体)、客户序列化并且员工和订单详细信息不是。但这是一个选择实体的问题。客户在订单旁边的数据模型中没有任何关系,因此对其进行序列化不会造成问题。然而员工是一个更复杂的实体,在不禁用延迟加载的情况下对其进行序列化会在反序列化时引发异常。
标签: c# entity-framework serialization linq-to-entities datacontractserializer