我编写了一些代码,这些代码从数据库获取记录,处理它们,如果出现问题,则会在数据库中写入错误消息。 在代码的最后,我从数据库中删除所有记录,其中错误字段(在数据库中)为空。
var logs = ctx.Logs.Where(record => String.IsNullOrEmpty(record.Error))
.Where(record => !Beingprocessed.Contains(record))
.Take(100)
.ToArray();
提取/处理/删除是在多个线程中同时完成的,因此在此代码运行时,数据库中的另一个线程可以删除记录。是否有可能只使用数据库中的值更新logs
?
像
这样的东西logs.Update();
ctx.Logs.RemoveRange(logs.Where(l => l.Error == null));
ctx.SaveChanges();
(我知道我可以使用来自logs
等的ID来再次获取它们,但我想知道是否存在更新从数据库中获取的实体的任何内容。)
答案 0 :(得分:1)
也许这会有所帮助:
ctx.Entry(Logs).Reload();