实体框架中的级联删除

时间:2012-03-10 22:44:14

标签: c# asp.net entity-framework entity-framework-4

所以我有两个表,Invoices和InvoiceItems。当我删除发票时,我也希望删除所有相关的InvoiceItem。

我更新了SQL Server中的关系,以便在删除发票时进行级联删除。然而,实体框架没有认识到这种改变,但我已经读过我需要手动更新我的EDMX以进行级联删除。

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

enter image description here

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

我需要将哪一个设置为Cascade?

2 个答案:

答案 0 :(得分:7)

我最初也对此感到困惑,原因是我不确定该字段是导航属性还是字段角色名称描述了一个结尾所代表的对象,作为Devidigitals无效的答案。

答案就是字段角色名称描述了结束。

因此,如果我们知道在有问题的发票被删除时我们要删除发票的所有 InvoiceItems ,我们可能知道我们应该为此设置OnDelete 发票,并找到代表关系中发票的特定结尾,搜索角色名称所在的结尾" Invoice"。在上面的例子中,那就是End1。

如果您知道,这可能是显而易见的,但如果您不知道,则可能不会。

答案 1 :(得分:5)

如果End1是关系的主体(即您的发票上有发票项目),那么它就可以级联删除。

相关问题