0

2 つのテーブル間に親子関係を設定しています。親テーブルは、主キーの自動インクリメント値でセットアップされます。これは正常に機能しており、親 DataTable の新しい行はUpdate、TableAdaptor を呼び出したときに挿入されたキーの実際の値で更新されます。

問題は、子テーブルの行が DB に挿入されていないことです。デバッグの目的で、コード サンプルにchangesBeforeとを追加して、子テーブルに存在する変更された行を確認しました。changesAfterデバッガーでコードをステップ実行するとchangesBefore、新しい子行が含まれます。changesAfterですNothingUpdateヘッダー テーブルに対する呼び出しAcceptChangesが子テーブルでトリガーされているかのようです。

DataTables と TableAdapter を使用した挿入/更新には精通していますが、親テーブルで自動インクリメントを使用するのはこれが初めての試みです。ここで何が欠けていますか?

        Dim changesBefore = _ds.ResponseDetails.GetChanges

        headersTa.Update(_ds.ResponseHeaders)

        Dim changesAfter = _ds.ResponseDetails.GetChanges

        detailsTa.Update(_ds.ResponseDetails)
4

2 に答える 2

0

これは現在機能しています。AcceptRejectRuleデータセット内の各リレーションにプロパティがあることがわかりました。親に対して呼び出されたときに、基本的に子テーブルにCascadeカスケードするようにルールを設定しました。ルールを変更して問題を解決しました。AcceptChangesUpdateNone

http://msdn.microsoft.com/en-us/library/system.data.acceptrejectrule(v=vs.80).aspx

于 2012-11-06T19:19:27.677 に答える
0

ヘッダーの更新を行った後、詳細レコードのリンク フィールドを、ヘッダー レコードから自動生成された ID で更新する必要があります。これは自動的には行われません。

于 2012-11-06T17:57:16.267 に答える