出于性能考虑更新N行
本文关键字:更新 于性能 性能 | 更新日期: 2023-09-27 18:15:40
我有一个OrderSequence表,模式大致如下:
- id <
- 名称/gh>
- OrderSequence
我有一个id数组("1","2","3","4")在我的MVC动作代码,我想设置排序目的的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++;
}
如果你想一次传递所有的数据,你可以看看表值参数,dapper在最近的版本中支持。