具有WCF和DataContractSerializer的IsReference DataContract属性
我从POCOs/EF4构建了一个相当大的对象图,我希望使用WCF将其交付给客户端应用程序。我的每件事都很好地完成了,也就是说,我有:具有WCF和DataContractSerializer的IsReference DataContract属性,wcf,datacontractserializer,Wcf,Datacontractserializer,我从POCOs/EF4构建了一个相当大的对象图,我希望使用WCF将其交付给客户端应用程序。我的每件事都很好地完成了,也就是说,我有: 确保POCO使用DataContract进行修饰(IsReference=true) 使用DataMember属性修饰属性 关闭EF4数据上下文的懒散加载和代理创建 在我的LINQ查询中用于选择加载哪些关联对象 增加了WCF maxBufferSize和maxReceivedMessageSize,以确保传输大型图形 我已经构建了一个小型测试WCF控制台应用程
- 确保POCO使用DataContract进行修饰(IsReference=true)
- 使用DataMember属性修饰属性
- 关闭EF4数据上下文的懒散加载和代理创建
- 在我的LINQ查询中用于选择加载哪些关联对象
- 增加了WCF maxBufferSize和maxReceivedMessageSize,以确保传输大型图形
<d4p1:Type></d4p1:Type>i758</d4p1:Personal>
<d4p1:PupilId>769375</d4p1:PupilId>
<d4p1:RollNo>BENNAW</d4p1:RollNo>
<d4p1:Sets>
<d4p1:PupilSet z:Ref="">i616</d4p1:PupilSet>
<d4p1:PupilSet z:Ref="">i47</d4p1:PupilSet>
<d4p1:PupilSet z:Ref="">i691</d4p1:PupilSet>
i758
769375
本纳乌
i616
i47
i691
结论:在反序列化过程中,所有z:Ref=”“的XML条目都没有被重新构造回对象引用-因此为空
解决方法:我从PupilSet DataContract中删除了“IsReference=true”,所有操作都正常
问题:何时使用“IsReference=true”合适?为什么DataContractSerializer无法使用正确的对象引用(而不是null)反序列化XML