繁体   English   中英

Entity Framework Core(7) 批量更新

[英]Entity Framework Core(7) bulk update

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

我不想从数据库服务器加载实体、修改属性和更新。 我只想 EF 生成适当的 UPDATE 语句。

正如所接受的答案所指出的,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 });

Wiki: 实体框架批量更新

这是 EF7 ExecuteUpdateAsync语法:

var updatedColumns = 
    await
    context
    .Blog
    .ExecuteUpdateAsync(p => p.SetProperty(s => s.Title, s => "Wow"));

在 EF7 的新增功能、ExecuteUpdate 和 ExecuteDelete(批量更新)文档中了解有关批量操作的更多信息。

在我发布这个答案的那天,有了我掌握的信息,看起来它work in progress

请参阅https://github.com/aspnet/EntityFramework/issues/795

EF不提供批量更新机制。 提案如下。 Context.Customers.Update()。Where。(c => c.CustType ==“New”)。Set(x => x.CreditLimit = 0)

你会考虑这个功能吗? 更多详细信息: https//entityframework.codeplex.com/workitem/52

它在 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM