actualizar N filas con consideraciones de rendimiento

asp.net-mvc c# dapper sql-server

Pregunta

Tengo una tabla con OrderSequence, el esquema se ve más o menos así:

  • carné de identidad
  • Nombre
  • Secuencia de pedido

Tengo un conjunto de identificadores ("1", "2", "3", "4") en mis códigos de acción MVC, quiero configurar el orden de secuencia para fines de clasificación. No quiero buclearlo a través de .Net y ejecutar N número de consultas sql. ¿Cómo debería hacerlo usando dapper / raw ado.net?

Respuesta aceptada

Dapper puede hacer eso a través de:

connection.Execute("update Orders set Sequence=@seq where Id=@id",
            ids.Select((id, seq) => new { id, seq }));

Sin embargo, esto es solo usar Dapper para desenrollar un bucle, en realidad está llamando a Execute por fila en su nombre, exactamente lo mismo que si hubiera hecho:

int seq = 0;
foreach(var id in ids) {
    connection.Execute("update Orders set Sequence=@seq where Id=@id",
         new { id, seq });
    seq++;
}

Si desea pasar todos los datos de una sola vez, puede ver los parámetros con valores de tabla, que dapper admite en compilaciones recientes .



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué