如何使用执行存储过程的 ExecuteStoreQuery 检查 C# 中的错误



我有一个使用 ObjectContext ExecuteStoreQuery 方法调用的存储过程,以便我可以获取存储过程返回的结果集。

我把它放在 try/catch 块中,但是即使存储过程返回以下错误,它也不会落入 catch 块。

如何捕获此类错误?

或者是否有另一种方法可以执行存储过程并获取结果集?

在 SQL 中执行时出错:

Msg 50000,级别 16,状态 2,过程计算费用,第 6440
行 计算费用时发生以下错误:
错误号: 515,行号: 5867
错误消息:无法将值 NULL 插入到"交易金额"列的表"交易"中;列不允许空值。插入失败。

电话代码:

using (DbContext dbContext = GetDbContext())
{
   using (ObjectContext objContext = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)dbContext).ObjectContext)
   {
       try
       {
           IEnumerable<ResultSet> results = objContext.ExecuteStoreQuery<ResultSet>(sqlString).ToList();
        }
       catch (Exception e)
       {
          EventLogger.LogException(e, title: "An error occurred while computing charges.", silent: false);
       }
   }
}
在这种情况下,只要尚未

选择/返回结果集,就会在 C# 中正确引发异常。 存储过程在进程中间而不是在 try 块的末尾选择结果集。 一旦结果集的 select 语句移动到 try 块的末尾,它就会在 C# 中引发异常。

相关内容

  • 没有找到相关文章

最新更新