从EF DbContext中删除项目

时间:2012-11-15 12:06:06

标签: entity-framework stored-procedures dependency-injection ef-code-first dbcontext

在我的项目中,我使用的是EF Code First 4.3。有时,我必须调用执行繁重操作的存储过程,并且该操作会修改某些实体,但由于EF DbContext标识映射我无法看到更改,除非我创建新的DbContext。

有没有办法解决这个问题而不重新创建DbContext?我通过依赖注入获得它,我宁愿不打破它,因为它非常方便。

1 个答案:

答案 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();
}