我目前在我们的某个项目上使用了dapper,并且始终执行存储过程。在前面的几个方法中,当我们执行的存储过程返回行时,一切正常。执行不返回结果的存储过程时抛出错误
现在我正在面临一个问题,当我试图从存储过程中获取数据时,它会在找到时返回信息。这是一个非常常见的用例(例如,在应用程序上记录用户)。当调用Query
方法,以及存储过程不返回任何行,短小精悍抛出与消息的ArgumentException
:
“当使用多地图API确保您设置的splitOn PARAM如果你有比ID参数其他键名称:splitOn”
我正在使用的代码是:
using (var conn = new SqlConnection(connString))
{
conn.Open();
return conn.Query<Customer>(
sql: "prc_GetCustomer",
param: new { Parameter = p },
commandType: CommandType.StoredProcedure).FirstOrDefault();
}
我知道,那里是在过程预计将不返回任何行,但它应该使用一个Execute
方法真的不是我的情况。另外,由于我没有使用多重映射,所以精巧的异常是误导性的。
任何想法? 谢谢!
是存储过程返回数据集的行数为零还是根本没有返回数据集? – RBarryYoung
当存储过程完全没有返回时,我可以重复这个问题。如果它只返回与对象具有相同结构的空结果集,它就可以正常工作。是否有理由不能返回空数据集而不是什么? –
ElvisLives
现在这个过程没有任何回应,我同意这不是一个好的解决方案,但是我们有很多像这样的遗留存储过程。我只是想知道,如果短小精悍不能检查是否没有字段,只是返回默认(T) – rocco