【问题标题】:How to serialize two object with `one-to-many` relationship?如何序列化具有“一对多”关系的两个对象?
【发布时间】:2010-08-12 06:26:34
【问题描述】:

我有两个类:LookupLookupItemLookup 有一个名为 Items 的成员,它是 LookupItems 的集合。我无法序列化LookupLookupItem。第一次出现错误The type LookupItem was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.,第二次出现错误A circular reference was detected while serializing an object of type Lookup.

我该如何解决这个问题?

我使用以下代码进行序列化:

public static string Serialize(object obj)
{
    XmlSerializer ser = new XmlSerializer(obj.GetType());
    StringBuilder sb = new StringBuilder();
    StringWriter writer = new StringWriter(sb);
    ser.Serialize(writer, obj);
    return sb.ToString();
}

更新: 类的骨架:

[ActiveRecord(Lazy = true)] 公共类查找:ActiveRecordExtender,IComparable { 公共查找() { }

[Property]
public virtual string Title { set; get; } 

// creating relation
[HasMany(typeof(LookupItem), Cascade = ManyRelationCascadeEnum.All)]
public virtual IList Items { set; get; }

}

[ActiveRecord(Lazy = true)] 公共类 LookupItem:ActiveRecordExtender { 公共查找项() { }

//creating relation
[BelongsTo("Lookup_ID")]
public virtual Lookup ContainerLookup { set; get; }

[Property]
public virtual string Title { set; get; } 

[Property]
public virtual string Value { set; get; } 

[Property]
public virtual int SortOrder { set; get; }

}

请注意我使用 Catle ActiveRecord 作为我的 ORM,请注意这个问题与从 ActiveRecordBase 的继承无关。因为此域中没有关系的其他类正常工作。

【问题讨论】:

  • 能否在您的帖子中包含 Lookup 和 LookupItem 类骨架?

标签: c# .net serialization xml-serialization


【解决方案1】:

【讨论】:

    【解决方案2】:

    根据一篇博文及其cmetshere,如果假设不需要相关数据,添加[XmlIgnore]即可解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多