2

我一直试图在这里找到这个问题的答案。似乎有几个人问过类似的问题,但我没有得到答案。我有一个带有一堆子实体(一对多关系)的 EF 实体。我希望能够删除“父”实体并同时删除所有子实体。

有人提到应该在 EF 模型和数据库(在我的例子中是 Sql Server)上设置“级联删除”。问题是:

  1. 我完全不知道如何做到这一点(似乎暗示在你应该知道的那些答案中,但抱歉......)
  2. 我有一种感觉,我以前遇到过类似的问题,并在比设置此 Cascade Delete 更简单的地方找到了答案。我可能错了,也许这是唯一的方法,但如果有更简单的解决方案,我想知道。

在任何一种情况下,将不胜感激如何获得此工作的清晰示例!

4

2 回答 2

5

在 SQL Managment Studio 中,转到您的数据库并找到应该有外键的表。向指向另一个表的表添加一个外键。我假设您知道如何设置外键。在对话框窗口底部的外键设置中,您将看到 Delete 属性。将其设置为级联。这将导致在删除父行时删除任何依赖行。然后在 Visual Studio 中更新您的数据模型。现在应该为您设置一切。

于 2011-02-22T22:12:35.050 回答
0

这是 MSDN 上的一些相关文档。请注意,该示例中似乎存在错误。使用此配置时,我收到了来自 EDMX 设计器的以下错误。

不能在具有多重性“*”的末端指定操作。

您应该将 OnDelete 属性设置为 Cascade,因为一端将触发另一端的删除。

例如,在涉及客户和订单的关系中,您希望将客户的订单与客户一起删除,您应该将 Customer 角色的 OnDelete 属性设置为 Cascade。

请注意,只有已加载到 ObjectContext 中的对象才会受到级联删除的影响。您将依靠您在数据库中设置的级联删除来处理任何其他记录。

于 2011-04-14T00:08:05.620 回答