如何使用EF Core(7)批量更新实体?
我不想从数据库服务器加载实体,修改属性和更新。 我只想要EF生成适当的UPDATE语句。
答案 0 :(得分:8)
正如公认的答案所指出的那样,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 });
答案 1 :(得分:0)
在我发布此答案的那一天,根据我所拥有的信息,它看起来像是work in progress
请参阅https://github.com/aspnet/EntityFramework/issues/795
EF不提供批量更新机制。提案如下。 Context.Customers.Update()。Where。(c =&gt; c.CustType ==“New”)。Set(x =&gt; x.CreditLimit = 0)
你会考虑这个功能吗?更多细节在这里: https://entityframework.codeplex.com/workitem/52