使用实体框架更新语句

发布于 2024-07-14 23:18:02 字数 111 浏览 7 评论 0原文

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

update test set value = value + 1 where id = 10

Simple question, is it possible to achieve this query this with Entity Framework when updating one entity?

update test set value = value + 1 where id = 10

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

姜生凉生 2024-07-21 23:18:02

使用实体框架扩展库的批量更新功能,如下所示:

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

Use the Batch Update feature of the Entity Framework Extended Library, like this:

dbContext.Tests.Update(t => t.Id == 10, t => new Test() { Value = t.Value + 1 });
£冰雨忧蓝° 2024-07-21 23:18:02

不是真的根据这个表格没有。

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

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

Not really under this form no.

You will have to select all entities that match your criteria, foreach over them and update them.

If you are looking for something that will do it right in the DB because your set could be huge, you will have to use SQL directly. (I don't remember if EF has a way to execute UPDATE queries directly the way Linq To SQL does).

初心未许 2024-07-21 23:18:02

应该是的,只是一般来说会受到更多的限制。

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

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

It should be, it will just be a little bit more constrained generally.

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

Should produce similar SQL, you can watch the profiler to see what SQL is actually being generated, but it should be very similar to your statement.

昇り龍 2024-07-21 23:18:02

从 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

Since Entity Framework Core 7 you can do this:

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

More information: https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-7.0/whatsnew#basic-executeupdate-examples

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文