【问题标题】:Is it possible to have the entity framework include the SQL command when it throws exceptions?是否可以让实体框架在抛出异常时包含 SQL 命令?
【发布时间】:2010-01-29 12:52:12
【问题描述】:

我的问题是,当我从实体框架中获得 SQL 异常时(例如,由于不允许为 null 的 null 值),有时很难确定引用的是哪个属性,以及为什么它为空。

现在我知道我可以设置 SQL 跟踪并将其记录下来,这将为我提供所需的信息,但这意味着我必须在打开登录后重新创建问题,这并不总是那么简单。

理想情况下,我希望实体框架能够在引发 SQL 异常时自动包含导致问题的实际 SQL 语句。

这可能吗?

【问题讨论】:

    标签: .net entity-framework exception exception-handling


    【解决方案1】:

    您是否查看过 SqlException 的 Errors 属性?它将包含一个 SqlErrors 集合,这些 SqlErrors 具有Procedure 属性,该属性将说明导致错误的已执行函数的名称

    【讨论】:

    • SQLError 上的“Procedure”属性为空,但“Message”属性包含了我所追求的详细信息。不知道我以前是怎么错过的。非常感谢。你已经解决了我的实际问题(所以我会给你答案),但我原来的查询类型仍然存在,似乎没有办法获取 EF 从异常对象执行的实际查询。反正。再次感谢。
    【解决方案2】:

    如果是 sql 异常被抛出,那么它将包含 detsil 确保不会被 throw new ex 吃掉任何异常;或 throw ex;,在 catch 中使用 throw 而不是这不会抑制异常的任何部分,您将获得详细的异常。 这就是我希望它有所帮助时遇到的问题。

    【讨论】:

    • 不,这不是问题,抱歉。我根本不会重新抛出异常。它直接来自实体框架层。这是一个 SQLException,不包含导致问题的 SQL 命令。
    猜你喜欢
    • 2012-10-20
    • 2014-10-27
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多