当我使用dapper时,我会继续获取表格的第一行,尽管我正在尝试传递特定ID,但我仍然从表中获得第一行。我错过了什么?我检查了sql profiler,发现id没有被发送到存储过程,所有数据都是returend。我累了很多东西,但不知道为什么id没有通过。
public Setting GetConfigurationPerIdy(string id)
{
return Run(conn => conn.Query<Setting>("spProc_GetSettingById",
new {id}).FirstOrDefault());
}
答案 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(),因为它只会从表中返回第一行,否则返回默认值。