场景:插入了一条数据到数据库,这条数据会有其它程序修改,接着程序想获取最新数据。此时不加额外处理,取的仍是旧的。
t_task ta = new t_task(); ta.item_id = item.item_id; ta.server_id = item.server_id; ta.win_service_update_dll = false; db.t_task.Add(ta); db.SaveChanges(); long taId = ta.id; System.Threading.Thread.Sleep(9000); // 使用 AsNoTracking(),强制从数据库中取数据,而不是上下文。 var myTa = db.t_task.AsNoTracking().FirstOrDefault(x => x.id == taId);
解决方法:使用 AsNoTracking().
如:
db.t_task.AsNoTracking().FirstOrDefault(x => x.id == taId);