2016-08-25 5 views
2

データベースにはtriggersがいくつかありますが、いくつかの条件に基づいてエラーが発生し、rollback transactionが返される可能性があります。DbUpdateExceptionでTriggerの名前またはエラーメッセージを取得します。

catchブロックには、エラーの原因に関する情報が含まれていないDbUpdateExceptionが表示され、内部例外にも意味のあるエラーメッセージが表示されません。私はEntity Frameworkを使用していたとき、私は、エラーメッセージまたはトリガーの名前を取得できますか

?私はユーザーにフレンドリーなメッセージを表示できるようにする必要があります。

2番目の内部例外はSqlExceptionですが、Procedureが空の文字列であるため、SqlExceptionにキャストすることは役に立ちません。

(e?.InnerException?.InnerException as System.Data.SqlClient.SqlException).Procedure 

答えて

0

トリガー名を取得するには、エラーメッセージにその名前を含める必要があります。以下は、定型的なコードの例です。

CREATE TRIGGER TR_YourTable ON dbo.YourTable 
FOR INSERT, UPDATE, DELETE AS 
BEGIN TRY 
    --do something; 
END TRY 
BEGIN CATCH 
    DECLARE @ErrorMessage nvarchar(2000) = 
     'Error occurred in trigger ' + OBJECT_NAME(@@PROCID) + ':' + ERROR_MESSAGE(); 
    RAISERROR(@ErrorMessage,16,1); 
END CATCH; 
GO 
+0

再生していただきありがとうございますが、エラーメッセージも表示されません。いずれにしても、私は何が起こったのか知りたいだけです。 – Akbari

関連する問題