我正在使用表的一个时间戳字段来避免将相同的数据返回给执行相同查询的不同用户。
为此,我想仅使用一个查询来更新与我的选择语句匹配的记录。在 postgres 中,我相信可以通过 usingSELECT FOR UPDATE
语句来实现,但它可以在DbContext
吗?我试图在这里避免多次数据库调用。
现在我使用的 select 语句如下所示:
using (var context = new InventoryContext())
{
var numbers = await (from a in context.Phones
where a.City.Equals(city, StringComparison.OrdinalIgnoreCase) &&
a.Type.Equals(type, StringComparison.OrdinalIgnoreCase)
select a).ToListAsync();
}
我该如何更改,以便为该查询中的所有条目更新 a.updateTimeStamp?
更新:
这不会解决我的问题(因为仍然可能发生并发),但是要更新上面语句中选择的数据,可以调用:
foreach (var n in numbers)
{
n.reservationTime = requestTime;
}
context.SaveChanges();