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

答えて

0

を使用してreccomandログファイルを読み込むことにより、ファイルを記録し、データを取得するための例外メッセージとスタックトレースを書くことです。 また、WPFアプリケーションはApplication.Current.DispatcherUnhandledException

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. 

報告します便利であなたの質問はかなり明確です。

関連する問題