我有一个包含 OrderSequence 的表,其架构大致如下:
- ID
- 姓名
- 订单顺序
我的 MVC 操作代码中有一个 ids 数组(“1”、“2”、“3”、“4”),我想设置 SequenceOrder 进行排序。我不想通过 .Net 循环它并执行 N 个 sql 查询。我应该如何使用 dapper/raw ado.net 来做到这一点?
最佳答案
Dapper 可以通过以下方式做到这一点:
connection.Execute("update Orders set Sequence=@seq where Id=@id",
ids.Select((id, seq) => new { id, seq }));
但是,这只是使用 dapper 来展开循环 - 实际上,它代表您每行调用 Execute
,与您所做的完全相同:
int seq = 0;
foreach(var id in ids) {
connection.Execute("update Orders set Sequence=@seq where Id=@id",
new { id, seq });
seq++;
}
如果你想一次性传递所有数据,你可以查看表值参数,which dapper supports in recent builds .
关于c# - 出于性能考虑更新 N 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25017235/