【问题标题】:VS2013 Debugger + Entity Framework: "runtime has refused to evaluate the expression", crashesVS2013 调试器 + 实体框架:“运行时拒绝评估表达式”,崩溃
【发布时间】:2013-11-07 18:22:16
【问题描述】:

在针对运行 SQL Server 的代码进行单元测试时,我在 VS2013 Ultimate 调试器中遇到了很多使用 Entity Framework 6.0.1 的问题。

无法在调试器中查看包含实体的变量。例如,如果我对我的 DbContext 执行 LINQ 查询并刷新结果视图以实际执行查询,则结果值为“无法评估子级”。如果我使用 ToArray() 它,那么现在变量是一个实体数组而不是一个 IQueryable,数组中的每个结果都是“无法评估表达式”。如果我将该数组中的单个实体值存储到一个变量并尝试查看它,我会得到“运行时此时拒绝评估表达式。”

通常,在涉及访问实体属性的行中按 F10 会导致 Visual Studio 崩溃。

如果我针对模拟的假 DbSet 运行测试,则不会发生这种情况。

这是一个已知问题吗?有没有办法解决这个问题?

【问题讨论】:

  • DbSet 的泛型类型在模拟案例中是否相同?也许实体类型有一个属性,也许是您创建的某种计算属性,它会引发异常。只是猜测。

标签: c# linq entity-framework debugging visual-studio-2013


【解决方案1】:

我遇到了类似的问题,虽然我还不明白为什么,打开选项 -> 调试 -> 常规 -> 使用托管兼容模式 - 让我可以继续正常调试.

我通过blog post找到了这个选项。

【讨论】:

  • 哇,谢谢!在 AppDomain 中对 IronPython 进行沙盒处理并尝试调试未捕获的异常时,我遇到了同样的问题。这让我很头疼:)
  • 太棒了。当我使用 WebClient 在 2 个解决方案之间发出 http 请求时,我遇到了这个问题。如果我调试了调用所针对的解决方案,则表达式不会在那里进行评估。谢谢,这解决了它
  • 这对我有用。之后我禁用了使用托管兼容模式,调试继续进行。
  • 有人知道为什么会这样吗?当您在循环中进行调试时,条件断点至关重要。我不明白他们为什么只将条件断点委托给旧版调试器。
  • 要添加的一点是,您需要在此选项可用之前关闭调试器。否则它会变灰:stackoverflow.com/questions/21166874/…
【解决方案2】:

安装VS2013后不久,我也遇到了错误

“无法计算表达式”

在调试较旧的 VS2012 解决方案时出现大量变量(没有代码涉及实体框架)。

有效的修复是删除与解决方案文件关联的两个Solution User Options (*.suo) files。比如MySolution.sln,对应的两个文件是:

  • MySolution.v11.suo(VS2012 版)
  • MySolution.v12.suo(VS2013 版)

在最初使用 v11 版本的设置创建 v12 版本时,它似乎已损坏。因此,删除它们两个允许为 VS2013 创建一个新的干净的 .suo 文件,问题就消失了。

(注意,.suo 文件在 Windows 7 上被标记为隐藏,因此如果没有 changing the settings to show them 或使用命令行查看它们,您可能无法在 Windows 资源管理器中轻松看到它们。)

【讨论】:

  • 这也解决了我的问题,但它并没有从 VS2012 升级到 VS2013,而是只是将 VS2013 更新到了 Update 3。
【解决方案3】:

如果里面有任何带有虚拟实体的实体,调试可能会出现问题。 我们在尝试在 Ef 范围内的实体上进行调试时遇到了这个问题。 然后实体框架尝试捕捉虚拟实体的状态。

在查看 db 范围之外的实体时,我们得到了更好的结果。 这样在查看实体值时不涉及 EF。

【讨论】:

    【解决方案4】:

    Visual Studio 2013 Update 2 承诺修复此错误,该错误可在以下位置的 cmets 中找到:

    http://weblog.west-wind.com/posts/2013/Nov/21/Visual-Studio-2013-Could-not-evaluate-Expression-Debugger-Abnormality

    【讨论】:

      【解决方案5】:

      我只是想为这里的人群添加我的声音。

      我正在开发一个 UWP 应用,而不使用实体框架,并且遇到了运行时“拒绝评估表达式”的类似问题。

      我使用的是 Microsoft Visual Studio Enterprise 2015 Update 2,我的解决方案是更新到 Update 3

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-05
        • 2011-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多