2011-07-07 26 views
0

私は非常に簡単な質問があります。Entity FrameworkのSQLException

私はSQLのためのストアドプロシージャを作り、それが次のようになります。

IF(@CurrentStatus='Fulfilled') 
    BEGIN 
     RAISERROR ('Opps, this item is too hot to last too long. It is SOLD OUT!',16, 1) 
     RETURN -1   
    END 

条件は満たしている場合には、エラーメッセージを返します。

私のC#コードでは、try-catchブロックを使用しています。

上記のストアドプロシージャからのエラーメッセージを画面に表示するだけです。どのような例外タイプを使用すべきですか?ここで

は私のコードです:

  try 
     { 
      storeDB.AddToBuyingOrders(newOrder); 
      storeDB.SaveChanges(); 
      TempData["Result"] = "Added"; 
      return View(); 
     } 
     catch (SqlException ex) 
     { 
      TempData["Result"] = ex.InnerException.Message.ToString(); 
      return View(); 
     } 

答えて

1

あなたはそのための質問をなぜかしら?あなたはExceptionをあなたのコードにブレークポイントを入れて数秒以内に答えを得ました!!!それはあなたがあなた自身でそれをしていないという問題があるのが好奇心であったからといって、実際の例を作るのに5分もかかりませんでした。

キャッチする正しい例外タイプは、EntityCommandExecutionExceptionまたはその親EntityExceptionです。 SqlExceptionInnerExceptionの物件になりますので、そこにあなたのメッセージが届きます。

+0

EntityCommandExecutionExceptionではなく、UpdateExceptionを使用する必要があります...しかし、あなたのお手伝いと時間をいただきありがとうございます。 – HorseKing

+0

何ですか? SaveChangesがtryブロックにある場合、例外はcatchブロックで処理されます。そうでなければ、それは解雇されなかったことを意味する。あなたは実際にその手順をどこで使いますか? –