C# 实体框架中的级联删除

C# 实体框架中的级联删除,c#,asp.net,entity-framework,entity-framework-4,C#,Asp.net,Entity Framework,Entity Framework 4,所以我有两张表,发票和发票项目。当我删除发票时,我希望所有相关的InvoiceItems也被删除 我更新了SQL Server中的关系,以便在删除发票时执行级联删除。然而,EntityFramework并没有识别出那个变化,但我已经读到我需要手动更新我的EDMX来执行级联删除 在EDMX的设计视图中,我单击了两个表之间的关系,并检查了属性以尝试设置级联删除 如您所见,有两个OnDelete属性:End1 OnDelete和End2 OnDelete 我需要将哪一个设置为级联?如果End1是关系

所以我有两张表,发票和发票项目。当我删除发票时,我希望所有相关的InvoiceItems也被删除

我更新了SQL Server中的关系,以便在删除发票时执行级联删除。然而,EntityFramework并没有识别出那个变化,但我已经读到我需要手动更新我的EDMX来执行级联删除

在EDMX的设计视图中,我单击了两个表之间的关系,并检查了属性以尝试设置级联删除

如您所见,有两个OnDelete属性:End1 OnDelete和End2 OnDelete


我需要将哪一个设置为级联?

如果End1是关系的主体(即您的发票包含发票项),则级联删除是有意义的。

我最初也对这一点感到困惑,原因是我不确定到底是字段导航属性还是字段角色名称描述了终端代表的对象,这使得答案变得无效

答案是,结束由字段角色名称描述

因此,如果我们知道,当相关发票被删除时,我们希望删除发票的所有发票项,那么我们可能知道应该为发票设置OnDelete,并且要查找表示关系中发票的特定端,请搜索角色名称所在的端“发票”。在上述示例中,即End1


如果你知道这一点,这可能很明显,但如果你不知道,这一点就不明显了。

我看到你编辑了你的帖子,说上面的End2是角色名“Invoice”。这不应该是End1吗?@KyleW哦,我的天,你当然是对的。谢谢你通知我。