我有一个OrderSequence表,模式看起来大致如下:
我的MVC Action代码中有一个id(“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++;
}
如果你想一次性传递所有数据,你可以查看表值参数, 这些参数在最近的版本中支持dapper 。