Dapper Multi-mapping APIs splitOn param Error - 我没有使用 MultiMapping
Posted
技术标签:
【中文标题】Dapper Multi-mapping APIs splitOn param Error - 我没有使用 MultiMapping【英文标题】:Dapper Multi-mapping APIs splitOn param Error - I'm not using MultiMapping 【发布时间】:2014-02-07 15:54:06 【问题描述】:我有一个项目,我在其中与许多存储过程进行交互。没有裸 SQL 选择。 我正在使用 Dapper。我们没有尝试使用任何 MultiMapping 功能。我试图弄清楚为什么这个 proc 会返回该错误?我应该检查什么?我应该寻找什么?
错误: 使用多映射 API 时,如果您的键不是 Id,请确保设置 splitOn 参数\r\n参数名称:splitOn
【问题讨论】:
这个问题是否重复:***.com/questions/8945006/…?你也可以发布堆栈跟踪吗? 【参考方案1】:您应该使用 Execute() 而不是 Query(),因为您的 SP 不会返回任何记录。 Dapper 假设您正在尝试获取数据,因此将丢失的结果映射到您的模型类。
【讨论】:
【参考方案2】:我今天遇到了这个问题,我不明白为什么我一开始并没有真正尝试进行多重映射时收到 MultiMapping 错误消息。我的代码使用 dapper 的 Query 而不是 Execute,因为 sproc 确实返回了一些行。
事实证明,在我的存储过程中,它采用单个 varchar 参数,如果参数作为 NULL 传递,那么结果只是返回值整数 0。如果它作为空字符串传递,我得到一个空结果集在正常返回值 0 之上。
因为我告诉 Dapper 使用 Query<MyClass>
,它会将从 null 版本返回的普通 0 视为 int,而不是 MyClass
,并尝试使用 Multimap,这就是多重映射错误的来源。
为了解决这个问题,我改变了我的存储过程,将一个空参数转换为一个空字符串参数,从而确保一个空的结果集而不是没有结果集,然后 Dapper 又开始快乐地工作了。
【讨论】:
以上是关于Dapper Multi-mapping APIs splitOn param Error - 我没有使用 MultiMapping的主要内容,如果未能解决你的问题,请参考以下文章
生信基础概念之unique reads VS multi-mapping reads
Dapper SqlMapperExtensions / Dapper.Contrib?