我有以下从依赖注入获得DbContext的类:
public DA(CustomDbContext db){
this.db=db;
}
public void AddEntry(Entry entry){
db.Entries.Add(entry);
db.SaveChanges();
}
public Entry SelectEntry(int id){
return db.Entries.First(e=>e.Id==id);
}
该类通过依赖项注入AddTransient
注册。问题是当我执行以下操作时:
var entry=new Entry{Stuff="stuff"};
da.AddEntry(entry);
await Task.Delay(2000);
var entryWithRecentChanges=da.SelectEntry(entry.Id);
我没有得到其他进程写入该条目的更改。我知道SaveChanges
创建了一个新事务,但是我认为该事务仅持续了该调用。据我所知,另一个过程不使用事务。如何强制Entity Framework获取该条目的最新数据?我正在使用Entity Framework Core和SQL Server。
答案 0 :(得分:1)
使用AsNoTracking解决了该问题:
public Entry SelectEntry(int id){
return db.Entries.AsNoTracking().First(e=>e.Id==id);
}