2011-07-07 5 views
0

J'ai une question très simple.SQLException pour Entity Framework

J'ai fait une procédure stockée pour mon SQL et il ressemble à ceci:

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

Il renvoie un message d'erreur lorsque la condition est rencontre. Dans mon code C# derrière, j'utilise un bloc try-catch.

Je veux simplement afficher le message d'erreur de la procédure stockée ci-dessus à l'écran. Alors quel type d'exception je devrais utiliser?

Voici mon code:

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

Répondre

1

Je me demande pourquoi vous poser des questions pour cela? Vous pouvez attraper Exception puis mettre un point d'arrêt dans votre code et obtenir la réponse dans quelques secondes !!! Il m'a même fallu moins de cinq minutes pour en faire un exemple juste parce que j'étais curieux de savoir quel problème y avait-il que vous ne le fassiez pas vous-mêmes.

Le type d'exception correct à attraper est EntityCommandExecutionException ou son parent EntityException. Le SqlException sera dans sa propriété InnerException et vous recevrez votre message là-bas.

+0

Je devrais utiliser UpdateException, pas EntityCommandExecutionException ... Mais toujours merci pour votre aide et votre temps. – HorseKing

+0

Quoi? Si SaveChanges est dans try block, l'exception sera gérée dans le bloc catch. Si ce n'est pas le cas, cela signifie qu'il n'a pas été viré. Où utilisez-vous réellement cette procédure? –