我有一个包含多个表的数据集,这些表是从存储过程中填充的。我想让它嵌套在 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;
我了解,它也应该导致在线异常。
什么可能导致此错误(当所有表只有一行时),如何解决?