Insertar en 120 columnas de matriz indexada 120

c# c#-4.0 dapper list sql

Pregunta

Tengo nombres de columnas como este

Id
,Test
,[H01_1]
,[H01_2]
,[H01_3]
,[H01_4]
,[H01]
,[H02_1]
,[H02_2]
,[H02_3]
,[H02_4]
,[H02]
,[H03_1]
,[H03_2]
,[H03_3]
,[H03_4]
,[H03]
,[H04_1]
,[H04_2]
,[H04_3]
,[H04_4]
,[H04]
,[H05_1]
,[H05_2]
,[H05_3]
,[H05_4]
,[H05]
,[H06_1]
,[H06_2]
,[H06_3]
,[H06_4]
,[H06]
,[H07_1]
,[H07_2]
,[H07_3]
,[H07_4]
,[H07]
,[H08_1]
,[H08_2]
,[H08_3]
,[H08_4]
,[H08]
,[H09_1]
,[H09_2]
,[H09_3]
,[H09_4]
,[H09]
,[H10_1]
,[H10_2]
,[H10_3]
,[H10_4]
,[H10]
,[H11_1]
,[H11_2]
,[H11_3]
,[H11_4]
,[H11]
,[H12_1]
,[H12_2]
,[H12_3]
,[H12_4]
,[H12]
,[H13_1]
,[H13_2]
,[H13_3]
,[H13_4]
,[H13]
,[H14_1]
,[H14_2]
,[H14_3]
,[H14_4]
,[H14]
,[H15_1]
,[H15_2]
,[H15_3]
,[H15_4]
,[H15]
,[H16_1]
,[H16_2]
,[H16_3]
,[H16_4]
,[H16]
,[H17_1]
,[H17_2]
,[H17_3]
,[H17_4]
,[H17]
,[H18_1]
,[H18_2]
,[H18_3]
,[H18_4]
,[H18]
,[H19_1]
,[H19_2]
,[H19_3]
,[H19_4]
,[H19]
,[H20_1]
,[H20_2]
,[H20_3]
,[H20_4]
,[H20]
,[H21_1]
,[H21_2]
,[H21_3]
,[H21_4]
,[H21]
,[H22_1]
,[H22_2]
,[H22_3]
,[H22_4]
,[H22]
,[H23_1]
,[H23_2]
,[H23_3]
,[H23_4]
,[H23]
,[H24_1]
,[H24_2]
,[H24_3]
,[H24_4]
,[H24]

Y estoy tratando de escribir un simple INSERT con dapper (SQL Server 2014). Para Id y Test, estoy escribiendo un objeto anónimo para ponerlo en el param pero no estaba seguro de cuál es la mejor manera de tomar un int de 120 length. matriz e insertarlo en las columnas que comienzan con H

Donde el índice 0 va a H01_1 y el índice 1 va a H01_2 ... etc.

No quiero tener que escribir SQL que diga

H01_1 = @H01_1,
H01_2 = @H01_2,
...

Y luego también tenemos que hacer un objeto anónimo que no

H01_1 = array[0],
H01_2 = array[1],
...

Una cosa que puedo hacer es insertar solo Id and Test y luego volver y hacer una ACTUALIZACIÓN en ese registro. Pero todavía estoy en la misma situación que antes, donde no sé la mejor manera de escribir una ACTUALIZACIÓN en Dapper sin escribir cosas 120 veces.

Respuesta popular

  1. Si es posible cambiar su estructura de tabla de datos, solo siga el diseño a continuación

    En su tabla tiene más número de columna y descubre que su ID asignada es primaria. Entonces, en lugar de usar la estructura de datos anterior, use a continuación ..

ID                 test          column                            value                                  
01               xyz           H01_1                           val_H01_1 
  01               xyz             H01_2                         val_H01_2  

Asignar clave primaria de grupo para ID, prueba y columna.

  1. Si no es posible cambiar la estructura. Luego, cree un XML a partir de sus datos de entrada y cree el procedimiento Almacenado como se muestra a continuación para ejecutarlo. Si continúa con http://www.itworld.com/article/2960645/development/tsql-how-to-use-xml-parameters-in-stored-procedures.html , obtendrá una idea.


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é