0

保存ボタンをクリックすると、データセットに 3 つのテーブルがあります。データ アダプタを使用してこれらのテーブルをデータベース テーブルに追加したいのですが、これら 3 つのテーブルの主キーはすべて、SQL で生成された自動番号です。

リレーションシップ Invoice、 InvoiceProduct 、 InvoiceProductExp テーブルは次のとおりです。 InvoiceNo has many InvoiceProductNo InvoiceProductNo has many InvoiceProductExpNo

次のコードはこれらの関係を解決できません

DECLARE @InvoiceNo INT
DECLARE @InvoiceProductNo INT
INSERT INTO Invoice ([Date])
VALUES (GETDATE())
SELECT @InvoiceNo = SCOPE_IDENTITY()
INSERT INTO InvoiceProduct([InvoiceNo])
VALUES (@InvoiceNo)
SELECT @InvoiceProductNo = SCOPE_IDENTITY() 
INSERT INTO InvoiceProductExp ([InvoiceProductNo], [InvoiceNo])
VALUES (@InvoiceProductNo, @InvoiceNo)
4

1 に答える 1

0

Dataset と DataAdapter を使用している場合、これらすべてのステートメントを発行するべきではありません。各データ アダプタは、そのレコードを更新する方法を知っているだけで済みます。親を更新すると、ID 値が自動的にデータセットに入れられ、子レコードが自動的に設定されます (リレーションシップを正しく設定したと仮定します)。その後、子テーブルを更新します。

このSO スレッドのコメントのいくつかを読んでください。そこにはいくつかの優れたコード スニペットがあります。

于 2013-07-23T13:56:07.130 に答える