2

これは本当に一般的な C# の質問だと思いますが、ObjectContextと特にSaveChanges()を使用してデータを永続化するときに Entity Framework を処理しようとしたときに考えました

今は通常、MSDN ドキュメントのアドバイスと、必要な例外に対する適切な try/catch ロジックに従うだけです。SaveChanges() の例は次のとおりです。

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

上記のリンクを読むと、 OptimisticConcurrencyExceptionと呼ばれる例外が 1 つリストされているため、この質問を課す必要があります。彼らが与える例を読んで、別のリストされたUpdateExceptionがあります。これで、例外の見出し内にリストされることが期待されます。

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

みんな、ありがとう。

4

2 に答える 2

3

残念ながら、私はあなたができるとは思わない。ただし、 OptimisticConcurrencyExceptionの継承構造を見ると、次の場所から継承されます。

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

あなたが捕まえれば、System.Data.DataExceptionそれはキャッチオールをする必要なしに両方を捕まえるはずです。

于 2012-04-13T19:43:24.763 に答える
2

OptimisticConcurrencyExceptionを指摘すると、例外は1つだけだと思います。コードを注意深く見ると、SaveChanges()がこの例外のみをスローすることに気付くでしょう。

UpdateExceptionは、SaveChanges()用ではなく、

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

またはその例の他のコード行。

于 2012-04-13T19:42:34.590 に答える