.net 如何处理自跟踪实体InvalidOperationException

.net 如何处理自跟踪实体InvalidOperationException,.net,exception-handling,self-tracking-entities,.net,Exception Handling,Self Tracking Entities,STE引发两种类型的异常: 更新异常 无效操作例外 使用UpdateException,我们可以检查内部SQLException.Number以识别异常,例如515=NullNotAllowed InvalidOperationException似乎没有公开代码。Hresult属性受保护 目前我正在分析InvalidOperationException。消息很难看: Try Using ctx AS New MyEntities ctx.Orders.ApplyChang

STE引发两种类型的异常:

更新异常 无效操作例外 使用UpdateException,我们可以检查内部SQLException.Number以识别异常,例如515=NullNotAllowed

InvalidOperationException似乎没有公开代码。Hresult属性受保护

目前我正在分析InvalidOperationException。消息很难看:

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
我们应该如何区分无效操作例外? 是否有可能的无效操作例外列表? 是否可以访问受保护的HResult

编辑 不,我不是说重复条目无效操作异常!
我收到一个InvalidOperationException关系无法更改,因为一个或多个外键属性不可为空。

似乎无法解决STE的异常处理。

有关更详细的讨论,请参阅