这可能有点晚了,但是对于查找详细信息的 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
因此,如果用户尝试在此演示应用程序的地址表中第二次插入“Spokane”,则上述异常处理程序会报告
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.
知道要使用哪个异常处理程序非常方便,您的问题也很清楚。