2012-04-13 10 views
2

を確認する方法これは本当に一般的なC#の質問ですが、私はそれについて考えていますを使用してデータを永続化するときにEntity Frameworkを処理しようとしたときObjectContextSaveChanges()スローされる可能性のあるすべての例外(特定のEntity Framework)

通常、私はMSDNドキュメントのアドバイスと必要な例外の適切なtry/catchロジックに従います。例)(SaveChangesメソッドのために以下の通りです:上記のリンクを読んで、記載された一つの例外がありますので

http://msdn.microsoft.com/en-us/library/bb336792.aspx

は今、この質問を装っイム、大丈夫ですOptimisticConcurrencyExceptionと呼ばれます。ここで示した例を読むと、UpdateExceptionという別のリストが表示されます。今私はそれがExceptionsの見出しの中にリストされることを期待します。

元の質問に戻ると、「オブジェクトまたはそのメソッドからスローされる可能性があるすべての例外を知る方法は?」

ありがとうございました。

+1

Cでは#できません。 – ChrisWue

+1

そのメソッドのソースコードとそれが呼び出すすべてのメソッドを見ることができます(これはcatch-allブロックではありません)。 – Servy

答えて

3

残念ながら、私はあなたができるとは思わない。あなたからそれを継承するOptimisticConcurrencyExceptionの継承構造を見ればしかし:

System.Object 
    System.Exception 
    System.SystemException 
     System.Data.DataException 
     System.Data.UpdateException 
      System.Data.OptimisticConcurrencyException 

あなたがSystem.Data.DataExceptionをキャッチした場合には、キャッチオールを行うことなく、両方をキャッチする必要があります。

+0

ありがとうMatthew!:)私はこれを行っていきます。再度、感謝します。 – garfbradaz

2

あなたが指摘しているように、1つの例外があります。OptimisticConcurrencyExceptionです。コードを慎重に参照すると、SaveChanges()がこの例外のみをスローすることがわかります。

UpdateExceptionのSaveChanges()ためではなく、その例の

ObjectQuery<SalesOrderHeader> orders = 
      context.SalesOrderHeaders.Where(
      "it.CreditCardApprovalCode IS NULL").Top("100"); 

またはコードの他のラインのためではありません。

+0

あなたは正しいです、見てくれてありがとう、疲れた目:( – garfbradaz

関連する問題