使用实体框架更新语句

问题描述 投票:0回答:4

简单的问题,在更新一个实体时是否可以使用实体框架实现此查询?

update test set value = value + 1 where id = 10
entity-framework executenonquery
4个回答
11
投票

使用Entity Framework扩展库的批量更新功能,如下所示:

dbContext.Tests.Update(t => t.Id == 10, t => new Test() { Value = t.Value + 1 });

5
投票

实际上并非在此表格下。

您必须选择符合您条件的所有实体,对它们进行遍历并更新它们。

如果您正在寻找能够在数据库中正确执行此操作的东西,因为您的集合可能很大,那么您将必须直接使用 SQL。 (我不记得 EF 是否有办法像 Linq To SQL 那样直接执行 UPDATE 查询)。


3
投票

应该是的,只是一般会受到一些限制。

var myEntity = context.First(item => item.id == 10);
myEntity.value += 1;
context.SaveChanges();

应该生成类似的 SQL,您可以观察探查器以查看实际生成的 SQL,但它应该与您的语句非常相似。


0
投票

从 Entity Framework Core 7 开始,您可以执行以下操作:

await context.Tests.Where(c => c.Id == 10).ExecuteUpdateAsync(
    s => s.SetProperty(b => b.Value, b => b.Value + 1));

更多信息:https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-7.0/whatsnew#basic-executeupdate-examples

© www.soinside.com 2019 - 2024. All rights reserved.