2

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

有没有办法在不重新创建 DbContext 的情况下做到这一点?我通过依赖注入得到它,我不想打破它,因为它非常方便。

4

1 回答 1

3

我认为您无法清除缓存,但您可以强制上下文重新加载特定实体。

要重新加载单个实体:

context.Entry(entity).Reload();

要重新加载特定类型的所有实体:

foreach (DbEntityEntry<T> entry in context.ChangeTracker.Entries<T>())
{
   entry.Reload();
}

重新加载所有实体:

foreach (DbEntityEntry entry in context.ChangeTracker.Entries())
{
   entry.Reload();
}
于 2012-11-15T13:28:56.780 回答