スイーツは、例外の2種類のスロー:UpdateExceptionで自己追跡エンティティInvalidOperationExceptionが
- UpdateException
- InvalidOperationExceptionが
を、私たちは例外を識別するための内部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つ以上の外部キー・プロパティーがnull値ではないために関係を変更できませんでした...」。
[セルフトラッキングエンティティの処理方法InvalidOperationException](http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/8ee96457-0182-4e6c-a925- d8c87b13be65) –