我使用以下代码从ObservableCollection<T>
重新填充SqlDependency
更改通知:
var set = _dbContext.Set<T>().ToList();
this.AddRange(set);
在这种情况下,OnChange
事件正确触发,但列表重新填充的内容与之前相同。现在我使用以下第二个DbContext来填充列表,如下所示,现在列表在更改后始终是最新的:
using (var dbContext = new XTimeDbContext())
{
var set = dbContext.Set<T>().ToList();
this.AddRange(set);
}
我能想到的唯一区别是第一种方法的查询结果是缓存的。如果是这样,我该如何防止这种情况?如果没有,为什么列表没有正确更新?
答案 0 :(得分:1)
使用AsNoTracking()
方法(here)阻止实体缓存:
var set = _dbContext
.Set<T>()
.AsNoTracking()
.ToList();
this.AddRange(set);