使用dapper时始终获取表格的第一行

时间:2014-08-11 23:28:40

标签: dapper

当我使用dapper时,我会继续获取表格的第一行,尽管我正在尝试传递特定ID,但我仍然从表中获得第一行。我错过了什么?我检查了sql profiler,发现id没有被发送到存储过程,所有数据都是returend。我累了很多东西,但不知道为什么id没有通过。

public Setting GetConfigurationPerIdy(string id)
{
    return Run(conn => conn.Query<Setting>("spProc_GetSettingById",
        new {id}).FirstOrDefault());
}

2 个答案:

答案 0 :(得分:0)

与常规ADO.NET一样,默认假设为CommandType.CommandText;如果您正在执行的命令是存储过程,您需要告诉它

..., new {id}, commandType: CommandType.StoredProcedure

否则,它在功能上与:

相同
declare @id int = 7; -- or whatever
exec spProc_GetSettingById; -- note that we didn't add the parameter

答案 1 :(得分:0)

从代码中删除 FirstOrDefault(),因为它只会从表中返回第一行,否则返回默认值。