执行不返回任何结果的存储过程时引发的错误

roc*_*cco 5 c# stored-procedures dapper

我目前在我们的一个项目上使用dapper,我们一直在执行存储过程。在前几种方法中,当我们执行的存储过程返回行时,一切工作都很好。

现在,当我尝试从存储过程中获取数据时发现一个问题,该存储过程返回信息。这是一个非常常见的用例(例如,在应用程序上登录用户)。当调用该Query方法时,并且sproc不返回任何行时,dapper会引发ArgumentException以下消息:

“使用多重映射API时,如果您具有Id参数名称之外的其他键,请确保设置splitOn参数:splitOn”

我使用的代码是:

using (var conn = new SqlConnection(connString))
{
    conn.Open();

    return conn.Query<Customer>(
            sql: "prc_GetCustomer",
            param: new { Parameter = p },
            commandType: CommandType.StoredProcedure).FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

我知道Execute当该过程不返回任何行但实际上不是我的情况时,应该使用一种方法。另外,dapper异常会引起误解,因为我没有使用多重映射。

有任何想法吗?谢谢!

Mar*_*ell 5

如果查询不返回任何结果网格,则应使用“执行”而不是“查询”。