這可能是晚了一點,但對於尋找細節的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.
知道哪個異常處理程序來使用是相當該死方便,你的問題很清楚。
我覺得很難理解你在問什麼。顯示例外,細節應該給你一個線索。或者在每行的周圍放置一個try/catch塊,這樣如果一行或另一行失敗,您可以執行一些特定的操作... –
您是否想要了解'resource.'是否已添加到'context.Resource'?否則,我不明白你的問題。 –
@ phresnel,@bemused,我更新帖子。 – Mediator