1

ストアドプロシージャから入力されたいくつかのテーブルを含むデータセットがあります。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つの行しかない場合)、どのように修正できますか?

4

1 に答える 1

2

データセットに関するその他の関係はありますか? ('それぞれが親である 2 つの異なるテーブルがあり、それぞれに 1 つの行があります')

于 2011-04-04T11:53:17.557 に答える