Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在使用RAISEERROR引发错误的情况下,是否有方法不向客户端返回任何结果?_C#_Sql Server_Entity Framework_Stored Procedures - Fatal编程技术网

C# 在使用RAISEERROR引发错误的情况下,是否有方法不向客户端返回任何结果?

C# 在使用RAISEERROR引发错误的情况下,是否有方法不向客户端返回任何结果?,c#,sql-server,entity-framework,stored-procedures,C#,Sql Server,Entity Framework,Stored Procedures,我正在使用实体框架调用SP。成功运行的SP返回一个字符串,因此我在EF映射中将返回类型设置为字符串。当执行时,它运行良好,我能够得到结果 如果出现错误,SP中会有一个代码以表的形式返回错误信息。因为我已经在EF中设置了字符串作为我的SP返回类型,所以每当我得到错误行作为结果时,我都会得到错误 为了解决这个问题,而不是发送错误行,我开始使用RAISEERROR(…)并在C代码中捕获异常 很少有SP在内部调用仍返回错误行的其他SP。因此,如果现在出现故障,我从内部SP得到一个错误结果,从外部SP得到

我正在使用实体框架调用SP。成功运行的SP返回一个字符串,因此我在EF映射中将返回类型设置为字符串。当执行时,它运行良好,我能够得到结果

如果出现错误,SP中会有一个代码以表的形式返回错误信息。因为我已经在EF中设置了字符串作为我的SP返回类型,所以每当我得到错误行作为结果时,我都会得到错误

为了解决这个问题,而不是发送错误行,我开始使用RAISEERROR(…)并在C代码中捕获异常

很少有SP在内部调用仍返回错误行的其他SP。因此,如果现在出现故障,我从内部SP得到一个错误结果,从外部SP得到一个raise错误。由于返回类型不匹配,这再次导致C#代码失败。令人惊讶的是,异常也被.Net忽略了

在SQL或EF中是否有一种方法可以在出错时忽略批处理的所有结果

这就是我提出错误的方式

RAISERROR ('%s <%s:%d:%s>', 16, -1, @ErrorMessageText, @inProcName, @inErrorID, @EventLogGUID)  
RAISERROR(“%s”,16,-1,@ErrorMessageText,@inProcName,@inErrorID,@EventLogGUID)

SP name是ABC,它被添加到EF中,并由C#代码作为一个简单的DBContext函数调用。它应该抛出错误,我没有try-catch块

请出示你的密码。您的C代码中有try/catch块吗?您是否也可以显示您的RAISEERROR代码,RAISEERROR必须使用大于10的严重性才能在C#中捕获。尝试使用16作为严重性级别,因为这是一般错误最常见的级别。您可以在过程中尝试/捕获