2011-01-07 16 views
0

私はデータベースに 'transactions'と 'transaction_lines'を持っています。トランザクションには基本的な共有の詳細があり、トランザクション行にはトランザクションを構成するコンポーネントの値が保持されます。従来のSQLでは、SQLトランザクションを使用しました(申し訳ありませんが、現在はあいまいな言葉があります)。次にINSERT INTO Transaction ...トランザクションテーブルの新しい行からIDENTITYキー値を取得します。トランザクションテーブルのID列を外部キーとして使用して、transaction_lineテーブルに挿入します。Linqを使用してSQLに関連項目を追加

linqでこれを行う良い方法はありますか?

account_transaction ac = new account_transaction 
          { 
           transaction_date = DateTime.Now, 
           is_credit = isCredit, 
           account = (db.accounts.FirstOrDefault(a => a.account_id == accountid)) 
          }; 

db.AddToaccount_transaction(ac); 

db.SaveChanges(); 

私は 'AddToaccount_transaction(AC)' と 'db.SaveChanges()' わたってるしきだと思い、私は私のtransaction_linesを追加する必要があります。

は、ここで私がこれまで持っているものです。

答えて

1

新しいtransaction_lineオブジェクトを作成し、外部エンティティをacに設定するだけでよいです。 LINQ-to-SQLでは、明示的なキーの代わりにエンティティオブジェクトを操作します。エンティティオブジェクトをacオブジェクトに設定することにより、レイヤに指示してキーの内容を決定し、それを設定します。

+0

ありがとうございます!それはうまくいくようだ... – Craig

1

上記の回答は正しいですが、私はこれをすべてTransactionScopeでラップします。そうすれば、そのクエリの一部が失敗すると、トランザクションをロールバックします。接続を閉じる前にscope.Complete()メソッドを呼び出すことを忘れないでください。 http://msdn.microsoft.com/en-us/library/ms251686(VS.80).aspx

+0

ありがとう!しましょう。 – Craig

関連する問題