更新所有子实体,EF / Linq

时间:2011-08-12 15:52:10

标签: c# entity-framework linq-to-entities

我有两张桌子A和B.他们的关系是1:N。 我想更新所有子表中的一个字段,但我不知道使用什么LINQ表达式来做到这一点 - 不应该太困难。

我在想这样的事情:

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

但显然它不起作用。

我知道另一种选择是foreach(..),但如果可能的话,我更喜欢L2E。

2 个答案:

答案 0 :(得分:7)

如果没有以foreachforList<T>.ForEach或类似方式循环遍历该集合,则无法在集合的所有项目上设置属性。

如果你想把它保持在一行,你可以这样做:

author.Books.ToList().ForEach(b => b.PublishYear = 1999);

答案 1 :(得分:3)

你必须循环并更新全部或使用通过SQL执行的原始Entity Framework语句,这对于此类事情会更有效。