【问题标题】:DataSet Serialization Problem in .Net.Net 中的数据集序列化问题
【发布时间】:2011-04-04 10:09:18
【问题描述】:

我有一个包含多个表的数据集,这些表是从存储过程中填充的。我想让它嵌套在 GetXml() 方法中。

我添加了关系:

set.Relations.Add(
    new DataRelation("Author_Document",
        new DataColumn[] { set.Tables["Author"].Columns["lngDocumentSeriesId"], set.Tables["Author"].Columns["strAuthorName"] },
        new DataColumn[] { set.Tables["Document"].Columns["lngDocumentSeriesId"], set.Tables["Document"].Columns["strAuthorName"] }, true));

我把它嵌套了:

foreach (DataRelation relation in set.Relations)
{
    relation.Nested = true;
}

并强制执行:

set.EnforceConstraints = true;

所有这些都运行良好,没有错误。问题是当我调用set.GetXml() 时,它会抛出一个DataException:“无法继续序列化DataTable 'Document'。它包含一个DataRow,它在同一个外键上有多个父行”。 p>

经检查,有问题的表格每张都只有一行。 lngDocumentSeriesId 和 strAuthorName 列匹配。即使存在数据完整性问题,据我了解,它也应该导致set.EnforceConstraints = true; 行出现异常。

什么可能导致此错误(当所有表只有一行时),如何解决?

【问题讨论】:

  • 当您将 Nested 设置为 false 时,GetXml() 是否按预期工作?
  • Menahem:是的。每个表都有一行表示(显然不是嵌套的),并且外键中的列匹配。
  • 数据集上的任何其他关系?
  • 有,但如果我注释掉有问题的那个,它就可以了。啊啊啊啊……刚刚解决了!你是对的......有两个不同的表,每个表都是父表,每个表都有一行。

标签: c# .net serialization dataset data-integrity


【解决方案1】:

数据集上的任何其他关系? ('有两个不同的表,每个表都是父表,每个表都有一行')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    相关资源
    最近更新 更多