VS2013调试器+实体框架:"运行时拒绝评估表达式",崩溃

nla*_*ker 38 c# linq debugging entity-framework visual-studio-2013

我在VS2013 Ultimate调试器中遇到Entity Framework 6.0.1时遇到很多问题,当调试到针对实时SQL Server的代码进行单元测试时.

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

通常,F10通过涉及访问实体属性的行导致Visual Studio崩溃.

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

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

MrE*_*ndo 82

我遇到了类似的问题,虽然我还没理解为什么,但选择 - >调试 - >常规 - >使用托管兼容模式 - 开启,允许我继续正常调试.

我通过这篇博文发现了这个选项.


Ray*_*ega 7

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

"无法评估表达"

调试较旧的VS2012解决方案时的众多变量(没有任何代码涉及实体框架).

该工作的修复程序删除这两个Solution User Options (*.suo)文件与解决方案关联的文件.例如,对于MySolution.sln,两个相应的文件是:

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

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

(注意,这些.suo文件在Windows 7上被标记为隐藏,因此您可能无法在Windows资源管理器中看到它们而无需更改设置以显示它们或使用命令行查看它们.)