Проблема сериализации DataSet в .Net - PullRequest
1 голос
/ 04 апреля 2011

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

2 голосов
/ 04 апреля 2011

какие-либо другие отношения в наборе данных? («есть две разные таблицы, каждая из которых является родительской, и у каждой есть одна строка»)

...