STEs抛出两种类型的异常:
使用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“无法更改关系,因为一个或多个外键属性是不可为空的......”。
答案 0 :(得分:0)
似乎没有办法解决与STE的丑陋异常处理。