2011-07-12 14 views
4

我需要處理異常重複。如何處理UpdateException?

var resource = new Resource() { url = tbUrl.Text }; 
try 
{ 
    context.Resource.AddObject(resource); 
    context.SaveChanges(); 
} 
catch(UpdateException ex) 
{ 
    // how to know exactly which is why the error occurred 
} 
catch (Exception ex) 
{ 

    throw; 
} 

UPDATE:

我需要捕捉,當我嘗試不增加獨特價值時發生了錯誤。 UpdateException - 在添加數據時發生錯誤時觸發。

+2

我覺得很難理解你在問什麼。顯示例外,細節應該給你一個線索。或者在每行的周圍放置一個try/catch塊,這樣如果一行或另一行失敗,您可以執行一些特定的操作... –

+0

您是否想要了解'resource.'是否已添加到'context.Resource'?否則,我不明白你的問題。 –

+0

@ phresnel,@bemused,我更新帖子。 – Mediator

回答

5

這可能是晚了一點,但對於尋找細節的ASP.NET數據庫更新錯誤的人,設置InnerException錯誤處理程序是有益的過人和詳細。

 try { 

      db.SaveChanges();        
     } 

     catch (System.Data.UpdateException ex)  
     { 
      Console.WriteLine(ex.InnerException); 
     } 


     catch (System.Data.Entity.Infrastructure.DbUpdateException ex) //DbContext 
     { 
      Console.WriteLine(ex.InnerException); 
     } 

     catch (Exception ex) 
     { 

      Console.WriteLine(ex.InnerException); 
      throw; 
     } 

數據庫中的T-SQL阻止插入重複的城市。

USE [ModelFirstApplication] 
GO 

/****** Object: Index [UQ_Address_City] Script Date: 5/30/2012 7:26:16 AM ******/ 
ALTER TABLE [dbo].[Addresses] ADD CONSTRAINT [UQ_Address_City] UNIQUE NONCLUSTERED 
([City] ASC) 
GO 

因此,如果用戶試圖將「斯波坎」第二次到地址表進入這個演示應用中,上述異常處理程序報告

System.Data.UpdateException: An error occurred while updating the entries. 

See the inner exception for details. ---> 

System.Data.SqlClient.SqlException: Violation of UNIQUE KEY constraint 'UQ_Address_City'. 
Cannot insert duplicate key in object 'dbo.Addresses'. 
The duplicate key value is (Spokane). 
The statement has been terminated. 

知道哪個異常處理程序來使用是相當該死方便,你的問題很清楚。