【问题标题】:ExecutionEngineException with SQL and LINQ带有 SQL 和 LINQ 的 ExecutionEngineException
【发布时间】:2013-07-30 11:22:08
【问题描述】:

我的代码正在尝试使用 LINQ to SQL 从数据库加载。目前,一旦我似乎触摸到查询返回的内容,我就会崩溃并出现错误 ExecutionExceptionError 发生:

目前我的代码非常简单,我有一个标准的 dbml 类,用于加载单个表 MC:

 private void RibbonButton_Click(object sender, RoutedEventArgs e)
    {
        MultipleChoiceDataContext t = new MultipleChoiceDataContext();
        var test =
            from a in t.GetTable<MC>()
            select a;

        testbox.Content = test.First().question;
    }

错误发生在行

test.First().question;

我在该地区找不到任何帮助或以前遇到过这个问题的人,所以我希望有人知道如何解决这个问题

【问题讨论】:

  • 您是否尝试过刷新实体模型?
  • 当然有。那里什么都没有发生
  • 还可以尝试将查询语法更改为 var q = t.MCs.FirstOrDefault(); if (q!= null) testbox.Content = q.Question;
  • 刚刚试过,那个。它提出了同样的问题
  • 查看详情链接是有原因的 :)

标签: c# linq


【解决方案1】:

ExecutionEngineException 表示 CLR 存在内部问题。它意味着以下之一:

  1. 您使用了不安全的代码或 PInvoke 导致内存损坏。 CLR 的数据结构现在已损坏。
  2. 其他一些库也这样做了(一个错误)。
  3. CLR 本身的一个错误。

在所有情况下,解决方案都是解决该问题,可能通过随机更改内容直到应用程序正常运行。尝试重构你的代码,注释掉一些东西,直到错误消失。把事情分解成新的方法。想想你正在使用的库是否在做不安全的事情。也许堆栈跟踪可以告诉您要避免哪些功能。

这是一种非常不合时宜的方法,但却是我所知道的最好的方法。很难解决,因为您没有做任何具体的错误。特别是,您显示的代码行通常不会导致内存损坏。

【讨论】:

  • 目前看来,它似乎来自于访问 test.First() 部分。那是唯一实际上似乎可以做任何事情的代码部分。目前只在这方面工作了大约 30 分钟,没有添加任何其他库,所以我不确定我将如何管理 1 或 2
  • 看起来像 System.Transactions 中的问题。此程序集使用不安全代码、PInvoke 和 COM 互操作。尝试创建一个非常小的复制项目并在另一台计算机上尝试。也许您会发现您安装的某些内容已损坏。
  • 如果我的安装损坏了,有没有办法重新安装 .NET 和所需的 DLL,而无需重新安装整个 Visual Studio?
  • 这似乎发生在我在这台计算机上安装的任何版本的 .NET 上,仍然要检查另一个
【解决方案2】:

原来问题是由于安装了 Visual Studio 2013 的预览版,卸载它后,该解决方案在 Visual Studio 2012 上再次完美运行

感谢大家的帮助!

【讨论】:

    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多