在我的项目中,我使用的是EF Code First 4.3。有时,我必须调用执行繁重操作的存储过程,并且该操作会修改某些实体,但由于EF DbContext标识映射我无法看到更改,除非我创建新的DbContext。
有没有办法解决这个问题而不重新创建DbContext?我通过依赖注入获得它,我宁愿不打破它,因为它非常方便。
答案 0 :(得分:2)
我认为您无法清除缓存,但可以强制上下文重新加载特定实体。
重新加载单个实体:
context.Entry(entity).Reload();
重新加载特定类型的所有实体:
foreach (DbEntityEntry<T> entry in context.ChangeTracker.Entries<T>())
{
entry.Reload();
}
重新加载所有实体:
foreach (DbEntityEntry entry in context.ChangeTracker.Entries())
{
entry.Reload();
}