除非通过断点进行调试,否则EntityFramework会抛出异常

时间:2014-01-15 22:12:32

标签: c# asp.net sql entity-framework

我有一个奇怪的例子,当EntityFramework尝试访问实体时会抛出这两个异常中的一个:

  • 已添加具有相同键的项目(如果未放置断点)
  • 程序集中的重复类型名称(如果放置了断点,我点击继续

以下是ERD的相关部分: ERD

以下是错误代码的一部分: Code

突出显示的行是异常发生的位置。

这是这样的:显示部分之前的代码片段从数据库中获取钱包列表,显示的代码是将每个钱包转换为可读JSON的过程的片段。因此,请将此代码视为for-each循环,其中 wallet 是表示在循环中操作的当前钱包的变量。在测试用例中,有两个通过数据库检索的钱包。第一个钱包有SourceUser和TargetReortable引用相同的UserAccount实体。第二个钱包具有相同的SourceUser,但TargetReportable指的是主题标签实体。当代码运行时,第一个钱包处理没有任何问题,但第二个钱包在尝试访问TargetReportable时返回上面列出的两个例外之一。

当我使用visual studio的断点调试功能玩游戏时,还会发生一些奇怪的事情。当我单步执行代码并在到达抛出异常的行之前就停止,我将鼠标移到钱包上。 SourceUser ,以进行以下可视弹出: enter image description here

在我显示弹出窗口(清楚地访问数据库以检索所有数据)后,异常抛出行突然能够检索到正确的#标签,其余操作顺利运行。

有人知道造成这种行为的原因是什么?这几天让我发疯了。

注意,ERD和代码片段是整体的片段。如果你们认为问题与此之外的事情有关,我很乐意向你展示更多。

1 个答案:

答案 0 :(得分:0)

您可能已启用DeveXpress Visualizer。尝试禁用它,问题就会消失,