我在使用CTP 5中的实体框架代码优先级内容时遇到问题。它正在对对象进行缓存,我不希望这样做。例如,我加载了一个加载对象的页面(使用ASP.NET MVC站点)。然后我去更改数据库。我重新加载页面,并没有反映更改。如果我杀死该网站并重新运行它,那么它显然会重新获取。对于类型,甚至是特定查询,我如何告诉它始终获取新副本。我认为它可能与MergeOption有关,但我很难找到适用于CTP 5的示例。谢谢。
答案 0 :(得分:15)
好的,想通了。以下有时会从EF缓存中提取:
return (from m in _dataContext.Monkeys
where m.MonkeyId == monkeyId
select m).FirstOrDefault();
您可以使用AsNoTracking()绕过更改跟踪/缓存内容:
return (from m in _dataContext.Monkeys.AsNoTracking()
where m.MonkeyId == monkeyId
select m).FirstOrDefault();