2009-05-28 11 views
1

私はLINQを少し新しくしており、削除に関して簡単な質問があります。LINQを使用して子レコードを自動的に削除する

たとえば、私は2つのテーブルOrdersとOrderItemを持っています。 LINQを使用して、私は簡単に

order.Items.Add(new OrderItem()); 

を使用して、新しい子レコードを作成することができ、これは、データベースに子レコードを作成し、注文IDへの外部キーを更新します。これは素晴らしいです、私はそれが好きです!私は子レコード

order.Items.Remove(orderItem); 

を削除したいとき、私は変更をsumbitとき(そのは実際にちょうど外国鍵IDを削除し、子行(注文項目)を削除ないので)しかし、私はエラーを取得します。私の望むようにこれを行うことは可能ですか?大規模なデータベースのすべての子行を削除するためのラージ・リポジトリと、ラダーを作成する必要はありません。

ありがとうございます。

E

答えて

2

あなたは親のキーの削除に子レコードを削除するには、外部キー関係を設定することにより、DB自体でそれを達成することができます。

これはLinq2SQLには透過的であり、認識されないので、OrderItemオブジェクトは引き続き存在するため、後でデータコンテキストを保持しないようにすることをお勧めします。

+0

データのコンテキストのためにカスケードを使用できません。 – doobist

2

SQL Serverがこれを処理できるように、問題のテーブルに対してON DELETE CASCADEを設定します。

+0

これはFK/PK上のスイッチに過ぎないのですが、これをコードレベルで扱うのはなぜですか? – rball

関連する問題