SQL Serverデータベースの複数のテーブルに挿入しようとしていますが、最初の挿入の1つで、後続の挿入で使用するIDENTITY値の外部キーが生成されます。LINQtoSQLでこれをどのように処理するかわかりません。私は複数のトランザクションでそれを行うことができると思いますが、私はこれを1つの場所で行うことを好みます...別名using句内。
私の擬似コードアルゴリズムは次のとおりです。
- TABLE1.COL2列にID値が存在するかどうかを確認します
- 存在しない場合は、TABLE1に新しい行を挿入します
- TABLE1.COL1列から、新しく挿入された行の外部キー値を取得します。
新しい外部キー値を使用してオブジェクトを作成し、TABLE2を更新します。
using (var sms = new SmsDataDataContext(connection_string) { foreach(SomeObject i in ListofObject) { TABLE1 t1 = CheckID(sms, i.ID); if (t1== null) { TABLE1 new_row = new TABLE1(); sms.TABLE1.InsertOnSubmit(new_row); //Ideally I want to do something like this even though i dont think it will work. sms.SubmitChanges(); TABLE2 update_row = new TABLE2(); update_row.ID = new_row.COL1.value; //has the newly created identity value from my last insert. //Assume this update_row exist in my TABLE2 table. sms.TABLE2.InsertOnSubmit(update_row); } } sms.SubmitChanges(); }