2009-06-12 16 views
1

レコードを永久に削除するのではなく(フラグを保持するだけです)、カスケード削除/更新がLINQ-to-SQLクラスでどのように機能するかを知りたいと思います。私は、例えば似たような状況を持っている場合はLINQ-to-SQLクラスのカスケード削除/更新

EDIT

フラグを削除するには、オプションを削除してください。どのように達成するのですかデータベースのカスケード削除

答えて

0

uはそれ

  1. のために、私が知っている2つの方法を、持っているFK制約はウル問題はカスケードのカスケードまたは更新時に削除存在する場合a)のu)はデータ層( で bは制約を定義する必要があります)書きますCTEを使用してプロシージャや関数、トリガーを保存し、アプリケーション層でのアプリ層
  2. テイクコントロールでそれを使用し、機能 を書くしかし、私のアドバイスは、データ層
+0

最初のオプションによれば、CTEを使用してストアドプロシージャを起動する必要がありますが、私はF.Kを持つテーブルの数があります。 1つのテーブルの(外部キー)。 どのように私はこれらの多くのテーブルがF.Kを持っていることを知るようになりますか?マスターテーブルから。将来的には私はF.kと新しいテーブルを追加します。またはF.Kで1つのテーブルを削除します。私はすべてのS.P.(ストアドプロシージャ)をチェックアウトしてから、すべてのロジックを書き直す必要があります。それは大きな仕事です。私が間違った方法で考えているかどうか、私に知らせてください。 – Vikas

+0

あなたは多くの時間がかかると思うなら、ストアドプロシージャクリエータ(あなたの他のプロジェクトに本当に便利です)を書いたり、CodeSmith – ibrahimyilmaz

2

のがdataba作るですseレベルの削除は完全な解決策ではありません。この場合、DataContextはオブジェクトが既に削除されているという事実については何も知らないのです。 より良い方法は、[Association(... DeleteRule = "cascade" ...])のようなアソシエーションフラグを使用してアプリケーションレベルで状況を処理することです。