我创建了自己的上下文,它继承自DbContext。假设我在数据库的[Posts]表中有1个帖子。请考虑以下情况:
每次刷新我的网站时,我都会查看SQL Profiler并且数据库被命中,那么为什么返回的帖子有旧值?我猜DbContext试图变得非常聪明并且有一些内部缓存机制,但很高兴告诉我他很聪明......
有人可以向我解释一下吗?
答案 0 :(得分:0)
你好吗"令人耳目一新"?如果您知道某个值已更改,则可以使用ServerWins或ClientWins刷新上下文缓存值:
http://msdn.microsoft.com/en-us/library/vstudio/bb738618(v=vs.100).aspx
// Resolve the concurrency conflict by refreshing the
// object context before re-saving changes.
context.Refresh(RefreshMode.ClientWins, orders);
然而,真正的问题归结为何时以及为何会首先发生这种情况,这与上下文的生命周期有关。也许你可能过度使用相同的上下文?请记住,SQL Server等具有自己的缓存机制,因此实体框架并不是试图进行缓存的项目池中唯一的鱼。
从以下链接中我们收集一些提示,如果您关注,您可能不会遇到此问题。 http://msdn.microsoft.com/en-us/data/jj729737.aspx