【问题标题】:Operation could destabilize the runtime: LinqToSQL操作可能会破坏运行时:LinqToSQL
【发布时间】:2009-01-27 00:03:18
【问题描述】:

尽管这是我见过的最好的错误消息之一(仅次于“此操作可能会破坏时空连续体中的租金”),但它也是最令人沮丧的消息之一。

我开发了一个 ASP.NET MVC 站点,它可以通过 VS2008 完美运行。它可以完美地托管在本地 IIS7 服务器(Win2008Server 和 Win7beta)上,也可以在另一台 Win2008Server 主机上运行。几天前,我将网站上传到新主机 (Win2008Server),每当评估我的一个(且只有一个)LinqToSQL 语句时,就会遇到“操作可能破坏运行时稳定”错误。

有问题的 Linq 语句已被简化到晦涩难懂的程度,但每当我评估结果时,仍然会发生错误:

var result = from e in db.calendarEvents select e;
foreach (var event in result)  // error occurs on this line
{
    ...
}

有问题的远程主机在完全信任的情况下运行,并且看不到任何 switch 语句(这两个问题在 Google 上被认为与错误有关)。

Operation could destabilize the runtime? 报告了类似问题,但没有使用接口(据我所知)。

有什么想法吗?

--- 暂停一下:有问题的表使用 TIME 数据类型,并映射到 TimeSpan 属性。显然,这仅在 .NET 3.5 SP1 中可用。我正在等待了解我的新主机是否安装了 SP1...

【问题讨论】:

  • 您能否提供有关什么是 calendarEvents 的更多信息,或许还可以提供此查询的命令文本? var text = db.GetCommand(result).CommandText 另外,我想你已经尝试过使用“event”以外的名称,因为这是一个保留字。

标签: asp.net-mvc linq linq-to-sql


【解决方案1】:

好的,最终结果是我的主机在安装了 .NET 3.5(不是 SP1)的服务器上运行我的站点,并且使用 TIME SQL 数据类型的一个表因上述错误而中断。 http://msdn.microsoft.com/en-us/library/bb386947.aspx 声明 LINQ to SQL 支持从 .NET 3.5 SP1 开始映射这些新类型。

我的主机好心地将我的网站迁移到 .NET 3.5 SP1 服务器,一切都很好。

【讨论】:

    【解决方案2】:

    event 是一个关键字。请改用 @event 作为变量名。

    【讨论】:

    • 是的,对不起,我的错。我实际上并没有在我的代码中使用“事件”,我只是在写这篇文章时没有考虑。
    【解决方案3】:

    如果你这样做会发生什么

    var result = (from e in db.calendarEvents select e).ToList();
    foreach (var event in result)  // error occurs on this line
    {
        ...
    }
    

    以便在进入循环之前评估 SQL?

    【讨论】:

    • 想到了 - 它在前一行中断(无论何时评估)。
    【解决方案4】:

    可能值得更改此代码以获取数据,然后检查确保数组具有值。

    dim result = (from e in db.calendarEvents).toArray
    If not results is nothing andalso results.length > 0 then
       'Do Loop
    End If
    

    如果 linq 查询不返回任何内容,则可以避免尝试完成 for 循环的错误

    【讨论】:

      【解决方案5】:

      在过去我看到发生此错误的情况下,这是由于尝试设置只读属性或字段的反射。由于 Linq2Sql 使用反射,我的猜测是这就是问题所在。您应该调查以“e”为实例的类的类型定义。

      确保属性位于正确的成员上。并注意 Linq2SQL 类中的只读。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-22
        • 2012-11-05
        • 1970-01-01
        • 1970-01-01
        • 2010-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多