簡體   English   中英

具有多個不同類型參數的 Dapper 更新查詢

[英]Dapper update query with multiple parameters of different type

我剛剛開始使用 Dapper,我有以下代碼根據參數組合(列表和局部變量)生成查詢

var sqlQuery = $"UPDATE MyItem SET ItemOrder = @ItemOrder WHERE Id = @Id AND TenantId = @TenantId;";

var parameters = new DynamicParameters();
parameters.Add("@ItemOrder", myItems.Select(x=> x.ItemOrder));
parameters.Add("@Id", myItems.Select(x => x.Id));
parameters.Add("@TenantId", SessionInfo.TenantId);

await dbConnection.ExecuteAsync(sqlQuery, parameters, transaction: transaction);

我可以在 SQL Server Profiler 中看到執行的以下查詢

exec sp_executesql N'UPDATE MyItem SET ItemOrder = (@ItemOrder1,@ItemOrder2,@ItemOrder3) WHERE Id = (@Id1,@Id2,@Id3) AND TenantId = @TenantId;',
N'@ItemOrder1 int,@ItemOrder2 int,@ItemOrder3 int,@Id1 bigint,@Id2 bigint,@Id3 bigint,@TenantId bigint',
@ItemOrder1=1,@ItemOrder2=2,@ItemOrder3=3,@Id1=1,@Id2=2,@Id3=5,@TenantId=1

返回Incorrect syntax near ','

為什么我收到這個錯誤。 我究竟做錯了什么?

嘗試如下:

foreach(var item in myItems)
{
     var sqlQuery = $"UPDATE MyItem SET ItemOrder = @ItemOrder WHERE Id = @Id AND TenantId = @TenantId;";

     var parameters = new DynamicParameters();
     parameters.Add("@ItemOrder", item.ItemOrder);
     parameters.Add("@Id", item.Id);
     parameters.Add("@TenantId", SessionInfo.TenantId);

     await dbConnection.ExecuteAsync(sqlQuery, parameters, transaction: transaction);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM