数据库冲突删除

时间:2018-06-13 13:05:22

标签: c# sql

我无法删除我的用户。由于我按下删除我得到以下错误;

  

“FK_dbo.Environments_dbo.JobExperiences_JobExperienceId”。冲突   发生在数据库“DiplTestDb”,表“dbo.Environments”,列中   'JobExperienceId'。

我认为我得到了错误,因为环境和工作经验是相关的,因此必须同时删除。有没有人,如果这可以通过fluentAPI完成,或者是否有不同的解决方案。

2 个答案:

答案 0 :(得分:2)

正如您所正确假设的那样,您获得异常的具体原因是用户和Environments.experienceId之间存在外键链接(从现在开始经验)。

要根据您的要求进行硬删除,您需要删除与用户具有外键关系的体验行。

假设您要删除用户:id 1,userEmail,test @ useremail.com

伪代码:

DbContext context = new DbContext();
User forDeletion = context.Users.FirstOrDefault(x => x.id == 1);
context.Environments.Delete(x => x.User_Id == forDeletion.id);
context.SaveChanges();

但是,我会认真地建议你不要这样做。 您应该将名为“deleted_at”(可能是deleted_by)的表上的列添加为可为空。 仅当deleted_at为null时才返回行。

这样可以更好地记录删除数据的时间和人员。

答案 1 :(得分:0)

您有一个完整性约束问题,意味着用户的id已在另一个表中使用,并且该表上有一个外键约束。