如何处理自我跟踪实体InvalidOperationException

时间:2011-10-06 19:16:51

标签: .net exception-handling self-tracking-entities

STEs抛出两种类型的异常:

  • UpdateException
  • 出现InvalidOperationException

使用UpdateException,我们可以检查内部SQLExeption.Number以识别异常(例如515 = NullNotAllowed)

InvalidOperationException似乎不公开代码。 Hresult财产受到保护。

目前我正在解析丑陋的InvalidOperationException.Message:

Try
    Using ctx AS New MyEntities
        ctx.Orders.ApplyChanges(order)
        ctx.SaveChanges()
    End Using
Catch ex As InvalidOperationException When ex.Message.Contains("...foreign-key properties is non-nullable")
    Throw New FaultException("...")
Catch ex As UpdateException When CType(ex.InnerException, SqlException).Number = SQLErrorNumbers.NullNotAllowed
    Throw New FaultException("...")
End Try

我们如何区分InvalidOperationExceptions? 是否有可能的InvalidOperationExceptions列表? 可以访问受保护的HResult吗?

EDIT 不,我不是在谈论“重复条目”InvalidOperationExceptions! 我收到一个InvalidOperationException“无法更改关系,因为一个或多个外键属性是不可为空的......”。

1 个答案:

答案 0 :(得分:0)

似乎没有办法解决与STE的丑陋异常处理。