Это может быть немного поздно, но для тех, у кого ошибка обновления базы данных 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.
Зная, какой обработчик исключений использовать, чертовски удобно, и ваш вопрос совершенно ясен.