Обновить все дочерние объекты, EF / Linq - PullRequest
2 голосов
/ 12 августа 2011

У меня есть две таблицы A и B. Их отношение 1: N.Я хочу обновить одно поле во ВСЕХ дочерних таблицах, но я не знаю, какое выражение LINQ использовать для этого - не должно быть слишком сложно.

Я думал что-то вроде:

parentEntity.childrens.All(..lambda expr..).field = value;

Но, очевидно, он не работает.

Я знаю, что другой вариант - foreach (..), но я бы предпочел L2E, если это возможно.

Ответы [ 2 ]

7 голосов
/ 12 августа 2011

Вы не можете установить свойство для всех элементов коллекции, не перебирая циклы по этой коллекции, либо с помощью foreach, for, List<T>.ForEach или подобного.

Если вы хотите сохранить это в одной строке, вы можете сделать что-то вроде:

author.Books.ToList().ForEach(b => b.PublishYear = 1999);
3 голосов
/ 12 августа 2011

Вы должны либо выполнить цикл и обновить все, либо использовать необработанный оператор SQL, выполняемый через Entity Framework, который был бы гораздо более эффективным для такого рода вещей.

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