更新所有子实体,EF/Linq

3
我是一名中文翻译,以下是IT技术相关的翻译内容。您需要更新所有子表中的一个字段,但不知道该使用什么LINQ表达式来完成这个操作,因为它不应该太难。我有两张表A和B,它们的关系是1:N。我在想像这样:

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

但很明显它没有起作用。

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


http://weblogs.asp.net/pwelter34/archive/2011/11/29/entity-framework-batch-update-and-future-queries.aspx - undefined
2个回答

8

如果你想要在一个集合的所有项上设置属性,就必须以某种方式通过循环来遍历该集合,可以使用 foreachforList<T>.ForEach 或类似的方法。

如果你想要将其保留在一行中,可以尝试以下方法:

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

我同意。Linq基本上是一种查询语言;它的目的是在不改变集合的情况下进行查询。我会将查询和对查询到的项进行foreach循环作为单独的语句。 - undefined
我本来想尽量不将整个集合移动到内存中,但你们两个都是对的。干杯! - undefined

3

您需要循环更新所有内容或使用通过Entity Framework执行的原始SQL语句,这种方式对于此类操作更加高效。


1
根据这个回答所指示的内容:https://dev59.com/WnA65IYBdhLWcg3wxRo8#3642383 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接