如何在Linq中执行多级级联删除?

时间:2010-03-23 23:30:37

标签: linq linq-to-sql

如果我有Customers表链接到Orders表,并且我想删除客户及其相应的订单,那么我可以这样做:

dataContext.Orders.DeleteAllOnSubmit(customer.Orders);
dataContext.Customers.DeleteOnSubmit(customer);

......这很棒。但是,如果我还有OrderItems表,并且我想删除每个已删除订单的订单商品,该怎么办?

我可以看到如何使用DeleteAllOnSubmit删除单个订单的所有订单商品,但我怎样才能为所有执行此操作>订单?

1 个答案:

答案 0 :(得分:3)

您可能希望考虑在数据库中的外键关系上使用删除级联,而不是使用LINQ来执行此操作。如果你想使用LINQ那么

customer.Orders.ForEach(x => x.OrderItems.ForEach(y=> dataContext.OrderItems.Delete(y));
dataContext.Orders.DeleteAllOnSubmit(customer.Orders);
dataContext.Customers.DeleteOnSubmit(customer);

应该这样做,但我还没有测试过。