实体框架关闭缓存

时间:2011-09-15 17:56:06

标签: c#-4.0 entity-framework-4

我试图弄清楚如何使用存储库模式关闭DbContext的缓存。现在我的视图和CRUD函数使用相同的上下文,因此在DbSet上放置.AsNoTracking()是行不通的,因为更新数据不像以前那样发生。

_context.Entry(e).State = e.Id == 0 ? EntityState.Added : EntityState.Modified;

_context.SaveChanges();

有人可以在EntityFramework中解释缓存,这样我就可以提供动态功能,如果用户更新记录然后点击链接查看其他数据,那么新网格上显示的数据会从以前的控制器动作...希望从那以后。

查看订单 - >更新订单 - >保存订单 - >查看用户 - >视图正确显示基于订单更改的项目计数聚合。

1 个答案:

答案 0 :(得分:1)

你问的问题并不容易。 你会做什么取决于你正在使用什么类型的实体 您可能知道有几个通用选项 - EF实体,自我跟踪实体,POCO无代理,带代理的POCO 取决于你有什么你会

1)重新挂接实体,在实体的导航属性上调用Load

2)重新附加实体,在上下文中调用LoadProperty

3)如果上下文保持不变,只需调用Load / LoadProperty

您实际上称为缓存的是实体跟踪,因此您可以在MergeOption

上分离实体或将MergeOption.NoTracking设置为ObjectQuery