Dapper多映射API splitOn参数错误 - 我没有使用MultiMapping

时间:2014-02-07 15:54:07

标签: c# sql .net dapper

我有一个项目,我与许多存储过程进行交互。没有裸SQL选择。 我正在使用Dapper。我们不会尝试使用任何MultiMapping功能。我试图找出为什么这一个proc会返回该错误?我该怎么检查?我应该寻找什么?

错误: 使用多映射API时,如果您具有Id \ r \ n \ nParameter name以外的键,请确保设置splitOn参数:splitOn

2 个答案:

答案 0 :(得分:13)

您应该使用Execute()而不是Query(),因为您的SP不会返回任何记录。 Dapper假设您正在尝试获取数据,因此将缺少的结果映射到您的模型类。

答案 1 :(得分:0)

我今天遇到了这个问题,并且无法理解为什么我在第一时间没有实际尝试多地图时收到MultiMapping错误消息。我的代码使用dapper的Query而不是Execute,因为sproc确实会返回一些行。

事实证明,在我的存储过程中,它接受一个varchar参数,如果param作为NULL传递,那么结果只是返回值整数0.如果它作为空字符串传递,我得到一个空的结果集在正常回报值0之上。

因为我已经告诉Dapper使用Query<MyClass>,所以它查看了从null版本返回的普通0作为int,而不是MyClass,并尝试使用Multimap,这是多图表错误的地方来自。

为了解决这个问题,我更改了我的存储过程,将空参数转换为空字符串参数,从而确保空结果集而不是结果集,然后Dapper再次开始工作。