.Net中的数据集序列化问题

时间:2011-04-04 10:09:19

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

我有一个包含多个表的数据集,这些表是从存储过程填充的。我想让它嵌套在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,它在同一个外键上有多个父行”。

经过检查,相关表格中只有一行。列lngDocumentSeriesId和strAuthorName匹配。即使存在数据完整性问题,也应该在set.EnforceConstraints = true;行引起异常,正如我所理解的那样。

什么可能导致此错误(当所有表只有一行时),以及如何修复它?

1 个答案:

答案 0 :(得分:2)

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