3

我正在尝试从我的网站 TABLE 中删除一个“人”,但我收到了错误,写在帖子的标题中,并且错误将我指向此代码:

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

或者,如果可能的话,我如何添加一个例外,所以当我点击删除按钮时,它会打开另一个页面并告诉我,我无权删除那个人。

有任何想法吗?

4

2 回答 2

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
于 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 回答