使用LINQ自动删除子记录

时间:2009-05-28 17:02:55

标签: linq linq-to-sql

我对LINQ有点新,并且有一个关于删除的快速问题。

比如说,我有2个表,Orders和OrderItems。使用LINQ,我可以使用

轻松创建新的子记录
order.Items.Add(new OrderItem());

这将在数据库中创建子记录并将其外键更新为orderId。这很棒,我喜欢它!但是,当我想删除子记录

order.Items.Remove(orderItem);

我在汇总更改时遇到错误(因为它实际上没有删除子行(订单项),只是删除了外键ID)。是否有可能按照我想要的方式做到这一点?我不想创建一大堆存储库,如果要删除大型数据库的所有子行的梯子。

提前致谢。

电子

2 个答案:

答案 0 :(得分:2)

您可以通过配置外键关系来删除父键的子记录,从而在数据库本身实现这一点。

请注意,这对Linq2SQL是透明的,并且它不会意识到它,因此最好确保在此之后不保留datacontexts,因为OrderItem对象仍然存在。

答案 1 :(得分:2)

为有问题的表设置ON DELETE CASCADE,让SQL Server为您处理此问题。