5

我目前在我们的一个项目中使用 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();
}

我知道Execute当过程预计不会返回任何行时应该使用一种方法,但这真的不是我的情况。此外,dapper 异常具有误导性,因为我没有使用多重映射。

有任何想法吗?谢谢!

4

1 回答 1

5

如果查询未返回任何结果网格,则应使用 Execute,而不是 Query。

于 2013-01-19T09:21:05.677 回答