2011-10-06 12 views
1

スイーツは、例外の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値ではないために関係を変更できませんでした...」。

+0

[セルフトラッキングエンティティの処理方法InvalidOperationException](http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/8ee96457-0182-4e6c-a925- d8c87b13be65) –

答えて

0

STEを使用した醜い例外処理の周りには方法がないようです。

関連する問題