Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlException:DELETE语句与引用约束“FK\U Payment\U Student”冲突_C#_.net_Sql Server_Asp.net Mvc - Fatal编程技术网

C# SqlException:DELETE语句与引用约束“FK\U Payment\U Student”冲突

C# SqlException:DELETE语句与引用约束“FK\U Payment\U Student”冲突,c#,.net,sql-server,asp.net-mvc,C#,.net,Sql Server,Asp.net Mvc,这是我的代码: Student student = db.Students.Find(id); db.Students.Remove(student) db.SaveChanges(); return RedirectToAction("Index"); 我得到以下错误 SqlException:DELETE语句与引用约束FK_Payment_Student冲突。数据库BlackBeardDB表dbo.Payment列'studentID'中发生冲突 代码没有删除记录。我是否必须使用Casc

这是我的代码:

Student student = db.Students.Find(id);

db.Students.Remove(student)
db.SaveChanges();
return RedirectToAction("Index");
我得到以下错误

SqlException:DELETE语句与引用约束FK_Payment_Student冲突。数据库BlackBeardDB表dbo.Payment列'studentID'中发生冲突


代码没有删除记录。我是否必须使用CascadeOnDelete;为此?

您不能从数据库中删除学生实体,因为学生与付款是一对多关系。在您可以删除学生后,首先删除指定学生的付款

您可以检查以下内容来解决此问题

不建议从数据库中永久硬删除。您可以使用软删除模式查看:

您可以尝试级联删除:

注: 如果级联删除尚未工作,请检查数据库配置,以下链接可能对您有所帮助


您不能从数据库中删除学生实体,因为学生与付款是一对多关系。在您可以删除学生后,首先删除指定学生的付款

您可以检查以下内容来解决此问题

不建议从数据库中永久硬删除。您可以使用软删除模式查看:

您可以尝试级联删除:

注: 如果级联删除尚未工作,请检查数据库配置,以下链接可能对您有所帮助


不能直接从父表学生中删除该元素,因为它与付款表处于外键关系。首先,您应该从子表viz中删除条目。这里是付款表,然后是学生表中的条目。 或
您可以从Student表中软删除条目,您可以在其中添加一列IsDeleted,并在条目被删除时将此位标志更新为true,而不是直接硬删除条目。

您不能直接从父表Student中删除元素,因为它与付款表具有外键关系。首先,您应该从子表viz中删除条目。这里是付款表,然后是学生表中的条目。 或
您可以从Student表中软删除条目,您可以在其中添加一列IsDeleted,并在条目被删除时将此位标志更新为true,而不是直接硬删除条目。

在删除付款详细信息之前,您不能删除学生记录,或者需要将付款表中的学生id更新为某个孤立id。 因此,您可以使用ON DELETE CASCADE或ON UPDATE CASCADE来解决问题

谢谢,
Neil

在删除付款详细信息或需要将付款表中的学生id更新为某个孤立id之前,不能删除学生记录。 因此,您可以使用ON DELETE CASCADE或ON UPDATE CASCADE来解决问题

谢谢,
尼尔

只要有学生的付款,你就不能开除该学生。。。。。因此,您需要首先删除该学生的所有付款,然后删除该学生条目。简单明了的引用完整性101…但是我能不能用CascaseOnDelete一次删除它们;同样,我不是100%确定?默认情况下,EF中的CascadeOnDelete处于启用状态。只要有学生的付款,您就无法删除该学生。。。。。因此,您需要首先删除该学生的所有付款,然后删除该学生条目。简单明了的引用完整性101…但是我能不能用CascaseOnDelete一次删除它们;同样,我不是100%确定?默认情况下,在EF中CascadeOnDelete处于启用状态。默认情况下,Cascade处于启用状态。所以问题是为什么它对OP不起作用。@MKR感谢您的评论。此问题可能是由于数据库配置造成的。应该仔细检查配置。让我们找出实际问题,并在回答中找到解决方法。否则,恐怕答案会让未来的用户感到困惑。OP应该检查并提供反馈。太好了!!也许你们可以提到CasecadeDelete在EF层默认是打开的。Cascade是默认的。所以问题是为什么它对OP不起作用。@MKR感谢您的评论。此问题可能是由于数据库配置造成的。应该仔细检查配置。让我们找出实际问题,并在回答中找到解决方法。否则,恐怕答案会让未来的用户感到困惑。OP应该检查并提供反馈。太好了!!也许你们可以提到CasecadeDelete在EF层默认是打开的。