削除する必要があるテーブルがありますが、それを参照する外来キーが多数あります。私は決して使用したことがありませんON DELETE CASCADE
- 私たちはレコードをソフトに削除するような種類のルールを持っています。ハード・デリートが絶対に必要な場合は、削除前/削除後のリンク・テーブルを手動でクリーンアップする必要があります。Entity Frameworkでカスケード削除を強制する
特定のテーブル(およびそのテーブル内のレコード)を取得し、リンクされているデータベース内のすべてのテーブル/レコードを繰り返し処理し、削除を実行する方法やヘルパ関数があります。私は今これがあまりにも練習ではないと信じたい。
です。スキーマ:私はどこOrganisationID = 3 ...
を削除したい場合は
Organisations (OrganisationID, Name)
Users (UserID, FirstName, LastName, OrganisationID)
Projects (ProjectID, Name, OrganisationID)
Organisations_Markets (OrganisationID, MarketID)
Tasks (TaskID, Description, UserID)
私はSQLのすべてのFKS一覧表示する方法があります知っている - EXEC sp_fkeys 'Organisations'
が。どのように私はEFでこれを行うことができ、任意の入れ子FKのためにそれを行うことができます。したがって、上記の例では、最初の削除はTasks
テーブル(OrganisationID = 3の場合はUsers
にリンクされているレコード)などになります。
編集: - 合計で100の以上の行が存在することは決してないだろう - パフォーマンスが問題ではないので、私はあなたのモデルでは、削除
時間をいただきありがとうございます。 'DELETE文がREFERENCE制約と衝突しました... '(ただし、このプロジェクトではEF 6を使用しています)。私は、最初にコードを使用するのではなく、DBを最初に使用すると付け加えるべきです。あなたはここで正しいかもしれませんが、それは起こっていないだけです。もし私がそれを理解したら、私は答えを投稿します.. – user982119