ストアドプロシージャから入力されたいくつかのテーブルを含むデータセットがあります。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が含まれています」。
調べてみると、問題のテーブルにはそれぞれ1行しかありません。列lngDocumentSeriesIdとstrAuthorNameは一致します。データの完全性に問題があったset.EnforceConstraints = true;
としても、私が理解しているように、それは回線上で例外を引き起こしたはずです。
このエラーの原因は何でしょうか(すべてのテーブルに1つの行しかない場合)、どのように修正できますか?