gpt4 book ai didi

entity-framework-4 - DbContext 的内部缓存 (?)

转载 作者:行者123 更新时间:2023-12-04 02:29:56 24 4
gpt4 key购买 nike

我创建了自己的上下文,它继承自 DbContext。假设我在数据库的 [Posts] 表中有 1 个帖子。考虑这个场景:

  • 我向 DbContext 询问了 的唯一帖子第一次 .并且 DbContext 按预期返回它。
  • 我手动更改 [Posts] 表中的一列。
  • 我刷新了我的网站 = 我再次向 DbContext 询问这篇文章。
  • DbContext 返回一个帖子,该帖子具有此特定列的旧值!

  • 我查看了 SQL Profiler 并且每次刷新我的网站时都会命中数据库,那么为什么返回的帖子具有旧值?我猜 DbContext 正在努力变得非常聪明,并且有一些内部缓存机制,但很高兴告诉我他是如此聪明......

    谁可以给我解释一下这个?

    最佳答案

    你是如何“提神”的?如果您知道某个值已更改,则可以使用 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 等有自己的缓存机制,因此 Entity Framework 并不是尝试进行缓存的项目池中唯一的鱼。

    我们从以下链接收集了一些提示,如果您关注这些提示,您可能不会遇到此问题。 http://msdn.microsoft.com/en-us/data/jj729737.aspx
  • 随着加载更多对象,上下文的内存消耗可能会迅速增加
  • 遇到并发相关问题的机会随着生命周期的延长而增加
  • 使用 Web 应用程序时,每个请求使用一个上下文实例
  • 使用 Windows 窗体时,使用每个表单的上下文
  • 关于entity-framework-4 - DbContext 的内部缓存 (?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3686810/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com