Как я могу сделать более одного уровня каскадного удаления в Linq? - PullRequest
0 голосов
/ 24 марта 2010

Если у меня есть таблица Customers, связанная с таблицей Orders, и я хочу удалить клиента и соответствующие ему заказы, тогда я могу сделать:

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

... это здорово. Однако что, если у меня также есть таблица OrderItems, и я хочу удалить позиции заказа для каждого из удаленных заказов?

Я вижу, как можно использовать DeleteAllOnSubmit, чтобы вызвать удаление всех позиций заказа для одного заказа, но как я могу сделать это для всех заказов?

1 Ответ

3 голосов
/ 24 марта 2010

Возможно, вы захотите использовать каскад удаления для отношения внешнего ключа в базе данных, а не использовать LINQ для этого. Если вы хотите использовать LINQ, тогда

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

должен сделать это, но я не проверял это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...