У меня есть набор данных, содержащий несколько таблиц, который заполняется из хранимой процедуры.Я хочу сделать его вложенным для метода 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;
, насколько я понимаю.
Что могло вызвать эту ошибку (когда все таблицы имеют только одну строку), икак это можно исправить?