Entity Framework Core(7)批量更新

11

如何使用EF Core(7)批量更新实体?

我不想从DB服务器加载实体,修改属性然后更新。 我只想让EF生成适当的UPDATE语句。

4个回答

12
作为接受的答案所指出的,Entity Framework Core目前还不支持直接在数据库中进行更新。
免责声明:我是Entity Framework Plus项目的所有者。
然而,EF+已经支持查询批量更新,无需在上下文中加载实体(支持:EF Core,EF6,EF5)。
// using Z.EntityFramework.Plus; // Don't forget to include this.

// UPDATE all users inactive for 2 years
ctx.Users.Where(x => x.LastLoginDate < DateTime.Now.AddYears(-2))
         .Update(x => new User() { IsSoftDeleted = 1 });

维基百科:Entity Framework批量更新


3

1

它已在 efcore 7 中发布。

await context.Blogs.ExecuteUpdateAsync(
    s => s.SetProperty(b => b.Name, b => b.Name + " *Featured!*"));

生成适当的:

UPDATE [b]
    SET [b].[Name] = [b].[Name] + N' *Featured!*'
FROM [Blogs] AS [b]

从官方dos获取的示例。

一个表的多个属性怎么办? - pantonis
1
尝试一下:await context.Blogs.ExecuteUpdateAsync(s =>{ s.SetProperty(b => b.Name, b => "1"); s.SetProperty(b => b.Age, b => 36); }); - Marco Medrano

0

我明白了,奇怪的是我自己没有谷歌过那个问题,尝试了很多次。 - Skorunka František

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