Как выполнить массовое обновление/запрос на удаление в Linq?

У меня есть 2 класса Linq2Sql: Parent и Child. Я хочу сделать вещи как удаление всех детей для родителя или обновления всех дочерних записей. В SQL я записал бы:

delete Child where ParentID = @p

или

update Child set Val = Val+1 where ParentID = @p

Я могу сделать это в Linq грубая сила путь в Parent класс:

Children.ToList().ForEach(c => c.DeleteOnSubmit()); // DeleteOnSubmit is my own method

и

Children.ToList().ForEach(c => c.Val++);

Но, учитывая свойственную потерю производительности Linq на Циклах foreach, это походит на очень неэффективный способ сделать вещи. Есть ли некоторый способ достичь желаемой цели, которая исчерпает точно один запрос?

8
задан Konamiman 15 June 2015 в 09:32
поделиться

3 ответа

Посмотрите на эту ссылку: Используется ExpressionTree: http://www.aneyfamily.com/terryandann/post/2008/04/Batch-Updates-and-Deletes-with-LINQ-to-SQL.aspx [Неработающая ссылка]

http://terryaney.wordpress.com/2008/04/14/batch-updates-and-deletes-with-linq-to-sql/ [Вероятно, правильный]

9
ответ дан 5 December 2019 в 06:38
поделиться

Для этих случаев вы можете использовать метод DataContext.ExecuteCommand для непосредственного выполнения SQL в вашей базе данных. Например:

dataContext.ExecuteCommand("delete Child where ParentID = {0}", parentId);
14
ответ дан 5 December 2019 в 06:38
поделиться
[

] Посмотрите на [] http://magiq.codeplex.com[] mass operation with linq. [

]
2
ответ дан 5 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: