2012-03-10 171 views
5

所以我有两个表,Invoices和InvoiceItems。当我删除发票时,我想要删除所有相关的InvoiceItems。实体框架中的级联删除

我更新了SQL Server中的关系,以便在删除发票时执行级联删除。但是,实体框架没有认识到这一变化,但我读过我需要手动更新我的EDMX来进行级联删除。

在我的EDMX的设计视图

好吧,我点击了两个表之间的关系,并检查了性能,试图把我的级联删除

enter image description here

正如你所看到的,有两个OnDelete属性:End1 OnDelete和End2 OnDelete

哪一个我需要设置为Cascade?

回答

5

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

7

我最初困惑这个为好,其原因是,我不知道它是否是场导航属性或描述了物体的结束表示的字段角色名称,使得Devidigitals无效的答案。

而且答案是这样的结果是由字段描述角色名称

因此,如果我们知道,我们要删除所有InvoiceItems发票当有问题的发票被删除,我们可能知道,我们应该设置OnDelete为发票,并找到具体的代表关系中发票的结束处,搜索角色名称为“发票”的那一端。在上面的例子中,那就是End1。

这可能是显而易见的,如果你知道它,但不是如果你不知道。

+0

我看到你编辑了你的帖子,说上面的End2是角色名称“Invoice”。这不应该是End1吗? – 2016-11-16 22:15:13

+0

@KyleW哦,我的,当然你是对的。感谢您通知我。 – Alex 2016-11-17 07:16:04