c# - 出于性能考虑更新 N 行

标签 c# sql-server asp.net-mvc dapper

我有一个包含 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/

相关文章:

c# - 尝试在 ASP.NET MVC3 View 中将 EditorFor 与 ICollection<string> 一起使用?

sql-server - SQL Server 中为 NULL 时的位数据类型大小

c# - 如何将插入插入到多个表中?

javascript - 带有 json 数据并选择的 MVC 下拉列表

c# - ASP.NET MVC 4 连接两个表

c# - 从代码 ⇒ IL 或 IL ⇒ native 代码创建的引用在哪里

c# - 来自 web api Controller 的异步回调

c# - .net 中的类型安全是什么?

java - 覆盖hibernate mssql的identitycolumn

c# - 自定义错误 MVC 5