今日はここはとても静かです...誰かがそのような解決策も探しているなら、私はそれを行う方法を見つけました。
したがって、主な問題は、最初のテーブルで新しく作成されたレコードのIDを取得することです。それが可能であれば、その後、2番目のテーブルに対応するレコードを作成する次のメソッドにそれを提供するだけです。
VSのコード自動生成機能を楽しむために、DataSetDesignerを使用しました。最初のテーブルをTripSetsと呼びましょう。DataSet Designerで、TripSetsTableAdapterを右クリックし、次に[プロパティ]をクリックします。InsertCommandプロパティグループを展開します。ここでは、2つのことを行う必要があります。
まず、パラメータコレクションエディタを使用して、パラメータのコレクションに新しいパラメータを追加します。ParameterName = @ TripId、DbType = Int32(または必要なもの)、Direction=Outputを設定します。
次に、CommandTextを変更します(便宜上、クエリビルダーを使用します)。コマンドの最後に、次のようなセミコロンの後に別のコマンドを追加します。
(...);
SELECT @TripId = SCOPE_IDENTITY()
したがって、次のようなステートメントが得られます。
INSERT INTO TripSets
(Date, UserId)
VALUES
(@Date,@UserId);
SELECT @TripId = SCOPE_IDENTITY()
パーサーエラーの警告が表示される可能性がありますが、無視してかまいません。これを構成すると、ビジネスロジックコードで次のように使用できるようになります。
int tripId;
int result = tripSetsTableAdapter.Insert(tripDate, userId, out tripId);
// Here comes the insert method into the second table
tripSetTripSearchTableAdapter.Insert(tripId, amountPersons);
おそらく、この操作を何らかの方法で同期させたいと思うでしょう(たとえば、TransactionScopeを使用して)が、それは完全にあなた次第です。