gpt4 book ai didi

c# - 在 DbUpdateException 中获取触发器的名称或错误信息

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:55 24 4
gpt4 key购买 nike

我在数据库中有几个触发器,根据某些情况,它们可能会抛出错误并回滚事务

问题是,在 catch block 中,我将收到一个 DbUpdateException,它不包含有关错误原因的任何信息,并且内部异常不会也没有任何有意义的错误消息。

当我使用 Entity Framework 时,如何获取错误消息或触发器名称?我需要这样做才能向用户显示友好的消息。

第二个内部异常是 SqlException,但将其转换为 SqlException 无济于事,因为 Procedure 是一个空字符串。

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

最佳答案

要获取触发器名称,您需要将其包含在错误消息中。下面是样板代码示例。

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

关于c# - 在 DbUpdateException 中获取触发器的名称或错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39136645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com