我一直试图在这里找到这个问题的答案。有几个人似乎在问类似的事情,但我没有得到答案。我有一个EF实体,有一堆子实体(一对多关系)。我希望能够删除“父”实体并同时删除所有子实体。
有人提到“Cascade Delete”应该在EF模型和数据库上设置(在我的例子中是Sql Server)。问题是:
在任何一种情况下,都会非常感谢一个明确的如何使这个工作的例子!
答案 0 :(得分:5)
在SQL Managment Studio中,转到数据库并找到应该有外键的表。将外键添加到指向另一个表的表中。我假设您知道如何设置外键。在对话框窗口底部的外键设置中,您将看到Delete属性。将其设置为Cascade。每当删除父行时,这将导致删除任何相关行。然后在Visual Studio中更新您的数据模型。现在应该为你设置一切。
答案 1 :(得分:0)
以下是MSDN上的一些relevant documentation。请注意,示例中似乎存在错误。使用此配置时,我从EDMX设计器收到以下错误。
无法在具有多重性'*'的末尾指定操作。
你应该将OnDelete属性设置为Cascade,最后将触发另一端的删除。
例如,在涉及客户和订单的关系中,您希望将客户的订单与客户一起删除,您应该将客户角色的OnDelete属性设置为Cascade。
请注意,只有已加载到ObjectContext中的对象才会受到级联删除的影响。您将依赖于在数据库中设置的级联删除来管理任何其他记录。