【发布时间】:2012-01-20 16:56:13
【问题描述】:
我有一个存储过程,我正在尝试使用 Dapper 执行它引发的错误似乎与我正在尝试做的事情无关,尽管我似乎无法弄清楚我在做什么我做错了。
这是我试图调用的存储过程的签名:
ALTER PROCEDURE [dbo].[stp_UpdateInboundDaf]
@InboundType varchar(255),
@Id bigint,
@UserId bigint,
@DonationID bigint = NULL,
@StatusId int = NULL,
@FinalFlag bit = NULL,
@ValidatedFlag bit = NULL,
@SignedFlag bit = NULL
AS ...
这是我为尝试调用该过程而编写的代码:
_cnx.Query("stp_UpdateInboundDaf", new
{
InboundType = parameters.InboundType,
Id = parameters.Id,
UserId = parameters.UserId,
DonationId = parameters.DonationId,
StatusId = parameters.StatusId,
FinalFlag = parameters.IsFinal,
ValidatedFlag = parameters.Validated,
SignedFlag = parameters.Signed
}, commandType: CommandType.StoredProcedure);
这些是传入的参数:
这是我得到的错误:
"使用多映射 API 时,如果您有除 Id 以外的键,请确保设置 splitOn 参数 参数名称:splitOn"
更新
SqlMapper.GetDynamicSerializer(IDataRecord reader, int startBound, int length, bool returnNullIfFirstMissing) 方法引发了错误。这是错误位置和堆栈跟踪:
有什么想法吗?
我正在使用当前版本的 Dapper(我字面意思只是在写这个问题之前克隆了 Github 上的 repo 并将 SqlMapper.cs 拉到我的项目中)。
【问题讨论】:
-
调试器说什么?您有来源,应该清楚错误发生在哪里。在最后一个可跟踪的堆栈位置周围提供堆栈跟踪和相关代码。
-
是的,对不起...我应该把它包括在内。我将使用引发错误的位置更新帖子。
-
禁用优化,我怀疑异常发生在上一行。
-
呃...我知道我的问题是什么。已更新。
-
很高兴您找到了解决方案 :) 自己想办法总是更好。反正+1
标签: dapper