【问题标题】:Convert a LINQ List into XML in Asp.net MVC architecture在 Asp.net MVC 架构中将 LINQ 列表转换为 XML
【发布时间】:2011-09-05 12:23:02
【问题描述】:

我在 LINQtoSQL 中有一个列表,它在表中有各种关系,现在我想将此列表转换为 XML。

我正在使用此代码

new XmlSerializer(typeof(T), IncludedTypes).Serialize(xmlWriter, this.Data);

其中 this.Data 有列表数据。

但它会引发错误

生成 XML 文档时出错。

因为我们的表相互关联,并且在我们的列表中它还维护所有表关系

现在如何将列表转换为xml?

【问题讨论】:

  • 内部异常是什么意思?
  • Exception 对象有一个名为 InnerException 的属性,检查它的值。
  • 其内部异常是:在序列化 abc.Core.Model.Channel 类型的对象时检测到循环引用。

标签: asp.net asp.net-mvc linq-to-sql xml-serialization


【解决方案1】:

circular reference was detected while serializing an object of type abc.Core.Model.Channel 这意味着Channel 对象具有引用另一个对象的属性,并且该对象具有引用Channel 对象的属性。

例如

Class Parent
{
   public Child Child
   {
       get;
       set;
   }
}
Class Child
{
   public Parent Parent
   {
       get;
       set;
   }
}

当序列化Parent.Child时,它会序列化Child.Parent,所以它会再次序列化Parent.Child等等。

要解决这个问题,请查看post

【讨论】:

    【解决方案2】:

    高拉夫,

    根据您问题中的 cmets 是内部异常:

    A circular reference was detected while serializing an object of 
    type abc.Core.Model.Channel
    

    我建议您使用[ScriptIgnore][XmlIgnore] 属性装饰任何父对象。这将防止循环引用在 xml 被保存时被执行。问题是由于父对象又再次引用子对象的事实。这个引用会一直延伸到无穷大(甚至更远:)),如果你没有表明你不希望序列化父对象,它将永远不会解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 2018-01-21
      相关资源
      最近更新 更多