Dapper动态参数



我使用dapper和dynamicParameters从Web API项目(.NET 5(中的SQL Server获取数据。

它大部分时间都能正常工作,没有任何问题,但有时我会收到以下错误

过程或函数MySP指定的参数太多。

我怀疑由于同时请求,参数重复。这个问题有解决办法吗?

string sp = "MySP";
if (ADOFunctions.IsConncetionReadyToOpen(Connection))
{
await Connection.OpenAsync();
}
var queryParameters = new DynamicParameters();
queryParameters.Add("@Date", dateTime.Date);
queryParameters.Add("@ClientRef", clientRef);
queryParameters.Add("@orderRefs", orderRefList);
var countLimitation = await Connection.QueryAsync<UnityExhibitionOrdersInfo>
(sql: sp, param: queryParameters, commandType: System.Data.CommandType.StoredProcedure);
foreach (var item in countLimitation)
{
if (item.Sold > item.Limit)
{
returnVal.Message += $"error ";
returnVal.Result = false;
}
}

首先,需要注意的是,这里甚至不需要DynamicParameters;一个简单的:

new { dateTime.Date, ClientRef = clientRef, orderRefs = orderRefList }

对于参数来说应该足够了,因为这是一个简单的用法,但是:无论哪种方式,queryParameters对象都是本地的,并且不是共享的(这很好(。这个应该运行得非常好——那么,我的怀疑是:";Connection是否在同一请求上的请求/并发异步流之间以某种方式共享"(绝对不能这样;ADO.NET连接不是线程安全的,也不用于并发访问(。

最新更新