を見て意味をなすれるためこれが少し遅れる場合がありますが、詳細を探している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