10

我在 CTP 5 中使用 Entity Framework Code First 的东西来解决问题时遇到了麻烦。它正在缓存对象,我不希望它这样做。例如,我加载了一个加载对象的页面(使用 ASP.NET MVC 站点)。然后我去更改数据库。我重新加载页面,更改未反映。如果我杀死该站点并重新运行它,那么它显然会重新获取。我如何,通常对于一个类型,甚至对于一个特定的查询,告诉它总是去获取一个新的副本。我认为这可能与 MergeOption 有关,但我无法找到适用于 CTP 5 的示例。谢谢。

4

1 回答 1

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();
于 2011-02-06T04:31:00.923 回答