我可以在实体框架中尝试/捕获SQL Server触发器错误

肖恩·普尔(Shaun Poore)

我有一个尝试使用.net实体框架进行调试的应用程序。如果我可以在entity.SaveChanges()周围的C#代码中进行尝试捕获,并且能够区分由于sql触发器在执行过程中失败以及发生的其他错误而导致的发生的错误,它将使工作变得更加容易。我想知道是否有人知道这是否可行/如何做到这一点。

例如

try{
    entities.SaveChanges();
}Catch(Exception e){
     if(e is MysterySqlTriggerException){
         //do something
     }else{
         //do something else
     }
}

/ **编辑** /

下面是我最终用来处理此问题的最终递归方法

    public void HandleTriggerException(Exception e)
    {
        if (e is SqlException)
        {
            //check if it is from a trigger
            SqlException sqlException = (SqlException)e;
            if (sqlException.Procedure.Contains("tr_")) //all my trigger names start with "tr_"
            {
                //trigger failed.  Handle exception.
            }
        }

        if (e.InnerException != null)
        {
            HandleTriggerException(e.InnerException);
        }
    }
诺沃

您需要在凸起属性内搜索所需内容SqlException检查您感兴趣的异常的值,并执行类似以下代码的操作:

void HandleSqlException(SqlException e)
{
     if (sqlex.Procedure == "myTrigger" || sqlex.Message.Contains("myTrigger"))
     {
        // act
     }        
}

...

try
{
    entities.SaveChanges();
} 
catch (System.Data.DataException dex)
{
    if (dex.InnerException is SqlException)
       HandleSqlException((SqlException)dex);
}
catch (SqlException sqlex)
{
    HandleSqlException(sqlex);
} 
catch (Exception e) 
{
    // non-SQL exception handling
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以尝试/捕获Entity Framework中的SQL Server触发器错误

来自分类Dev

SQL Server中FD保留触发器中的错误

来自分类Dev

如何获取PHP中的SQL Server触发器错误?

来自分类Dev

SQL Server触发器

来自分类Dev

SQL触发器中的错误

来自分类Dev

触发器中的SQL ORACLE错误

来自分类Dev

在SQL Server中编写触发器

来自分类Dev

在SQL Server中插入触发器

来自分类Dev

SQL触发器给出错误

来自分类Dev

SQL触发器导致错误1054

来自分类Dev

SQL触发器错误说明?

来自分类Dev

SQL Server:原子触发器

来自分类Dev

SQL Server 2008触发器

来自分类Dev

SQL Server触发器,递归更新

来自分类Dev

SQL Server表审核触发器

来自分类Dev

SQL Server 2008触发器

来自分类Dev

Sql Server的定时触发器

来自分类Dev

SQL Server表审核触发器

来自分类Dev

SQL Server嵌套触发器

来自分类Dev

插入前的 SQL Server 触发器

来自分类Dev

如何忽略触发器中的错误并在MS SQL Server中执行相应的操作

来自分类Dev

触发器在SQL SERVER中的多行更新中给出错误

来自分类Dev

在pl / sql中触发触发器引发错误

来自分类Dev

PL / SQL触发器返回缺货错误:使用编译错误创建的触发器

来自分类Dev

Oracle PL / SQL触发器-捕获名称错误的插入

来自分类Dev

Oracle PL / SQL触发器-捕获名称错误的插入

来自分类Dev

SQL Server DDL触发器未触发

来自分类Dev

SQL Server触发器无法解释地触发

来自分类Dev

SQL Server2012。触发器。创建表时如何自动创建触发器