3

ウェブサイトのテーブルから「人」を削除しようとしていますが、投稿のタイトルに書かれているエラーが発生し、エラーは次のコードを指しています:

Patient patient = db.Patients.Single(p => p.Patient id == id);
db.Patients.Remove(patient);
db.SaveChanges();
return RedirectToAction("Index");

または、可能であれば、例外を追加するにはどうすればよいですか。削除ボタンをクリックすると、別のページが開き、その人を削除する権限がないことがわかります。

何か案は?

4

2 に答える 2

11

その患者を参照するすべてのクレームを削除する必要があります。これを実現する 1 つの方法は、カスケード削除を外部キー制約に追加することですが、どの DBMS を使用しているかわかりません。

エラー メッセージは SQL Server を示唆しているように見えるので、ここに SQL Server に関する情報を示します - Cascading Reference Integrity Constraints

これを状況に合わせて修正するには、DROP CONSTRAINT を実行してから ADD CONSTAINT を実行します。

ALTER TABLE dbo.Claims
   DROP CONSTRAINT FK_Claims_Patients

ALTER TABLE dbo.Claims
   ADD CONSTRAINT FK_Claims_Patients
   FOREIGN KEY (PatientId) REFERENCES dbo.Patients(PatientId) ON DELETE CASCADE
于 2013-04-14T12:35:23.450 に答える
0
Patient patient = db.Patients.Single(p => p.Patient id == id);
patient.Claims.clear();
db.Patients.Remove(patient);
db.SaveChanges();

リンク テーブルの関連アイテムを削除し、削除を許可します。

于 2014-05-30T04:50:28.860 に答える