C# 序列化实体对象时的IndexOutOfRangeException
我将WCF与实体框架一起使用。我有一个Web服务,它返回一个指向某个实体对象数组的对象。当Silverlight客户端调用该方法时,我得到一个“NotFound”异常 我查看了WCF日志和事件日志,发现错误是序列化对象时出现的IndexOutOfRangeException。当我分析以下内容时,发现了一个大的堆栈跟踪。在此之前,我的模型的一个片段(为了便于理解,我翻译了名称): 实体基本项: (部分物业) 详细项目[]详细信息; 实体详细信息项: (部分物业) 相关项目外部信息; 实体相关项: (部分物业) 然后我有了这个调用堆栈: (...) in WriteArrayOfDetailItemToXml(...) (...) in WriteBaseItemToXml(...) (...) in WriteDetailItemToXml(...) (...) in WriteArrayOfDetailItemToXml(...) (...) in WriteRelatedItemToXml(...) (...) in WriteDetailItemToXml(...) (...) ib WriteArrayOfDetailItemToXml(...) (...) em WriteBaseItemToXml(...) em System.Runtime.Serialization.ClassDataContract.WriteXmlValue(...) (...) 以书面形式向DETALITEMTOXML(…) (...) 以写形式的SeitemToXML(…) (...) 书面形式的tailitemtoxml(…) (...) 以书面形式向DETALITEMTOXML(…) (...) 以WriteRelatedItemToXml(…) (...) 书面形式的tailitemtoxml(…) (...) ib WriteArrayOfDetailItemToXml(…) (...) em WriteBaseItemToXml(…) em System.Runtime.Serialization.ClassDataContract.WriteXmlValue(…) 在我看来,序列化程序进入了一个递归循环,试图写入所有属性,包括交互属性(我不知道这是否是名称,我指的是框架在关系两侧生成的属性)C# 序列化实体对象时的IndexOutOfRangeException,c#,entity-framework,wcf,serialization,C#,Entity Framework,Wcf,Serialization,我将WCF与实体框架一起使用。我有一个Web服务,它返回一个指向某个实体对象数组的对象。当Silverlight客户端调用该方法时,我得到一个“NotFound”异常 我查看了WCF日志和事件日志,发现错误是序列化对象时出现的IndexOutOfRangeException。当我分析以下内容时,发现了一个大的堆栈跟踪。在此之前,我的模型的一个片段(为了便于理解,我翻译了名称): 实体基本项: (部分物业) 详细项目[]详细信息; 实体详细信息项: (部分物业) 相关项目外部信息; 实体相关项:
有人知道可能发生的情况以及导致此错误的原因吗?请注意序列化和启用延迟加载,因为通常会有序列化整个数据库的风险。。。关于这一点,有几篇文章。当然,如果您有一个公共属性,序列化程序将读取它,框架将从数据库中检索它(如果您启用了延迟加载)。我如何知道是否启用了延迟加载?它是上下文context.Configuration.LazyLoadingEnabled的一个属性。我在MSDN上找到了这篇文章,其中也谈到了序列化。它只是说了我以前写的…注意序列化和启用延迟加载,因为通常您会冒序列化整个数据库的风险。。。关于这一点,有几篇文章。当然,如果您有一个公共属性,序列化程序将读取它,框架将从数据库中检索它(如果您启用了延迟加载)。我如何知道是否启用了延迟加载?它是上下文context.Configuration.LazyLoadingEnabled的一个属性。我在MSDN上找到了这篇文章,其中也谈到了序列化。它只是说我以前写的。。。 (...) in WriteArrayOfDetailItemToXml(...) (...) in WriteBaseItemToXml(...) (...) in WriteDetailItemToXml(...) (...) in WriteArrayOfDetailItemToXml(...) (...) in WriteRelatedItemToXml(...) (...) in WriteDetailItemToXml(...) (...) ib WriteArrayOfDetailItemToXml(...) (...) em WriteBaseItemToXml(...) em System.Runtime.Serialization.ClassDataContract.WriteXmlValue(...)