我正在尝试从我的网站上删除一个“人”,但我收到错误,写在帖子标题中,错误指向我这段代码:
Patient patient = db.Patients.Single(p => p.Patient id == id);
db.Patients.Remove(patient);
db.SaveChanges();
return RedirectToAction("Index");
或者,如果可能的话,我如何添加例外,所以当我点击删除按钮时,它会打开另一个页面并告诉我,我没有删除该人的权利。
有什么想法吗?
答案 0 :(得分:11)
您需要删除所有引用该患者的声明。实现此目的的一种方法是向外键约束添加级联删除,但是,我不知道您正在使用哪个DBMS。
错误消息似乎暗示SQL Server,所以这里是SQL Server的一些信息 - Cascading Referential 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
答案 1 :(得分:0)
Patient patient = db.Patients.Single(p => p.Patient id == id);
patient.Claims.clear();
db.Patients.Remove(patient);
db.SaveChanges();
将删除链接表中的相关项目并允许删除。