¿Importa si se llama a con.execute () varias veces?

asp.net-core-mvc c# dapper sql-server

Pregunta

Considere lo siguiente (usando dapper) Ejemplo 1:

var query = @"INSERT INTO FOO (ID, Name) VALUES (1, 'Test')
INSERT INTO FOO (ID, Name) VALUES (2, 'ABC')";

using(var con = connection)
{
    con.Execute(query);
}

Ejemplo 2:

var queryOne = "INSERT INTO FOO (ID, Name) VALUES (1, 'Test')";
var queryTwo = "INSERT INTO FOO (ID, Name) VALUES (2, 'ABC')";

using(var con = connection)
{
    con.Execute(queryOne);
    con.Execute(queryTwo);
}

Estoy tratando de entender si importa la forma en que ejecuto mis 2 inserciones. Desde mi punto de vista se abre con la instrucción using y se cierra a la salida de la instrucción using.

¿Importa cuántas veces llamo a con.Execute() ? ¿Es mejor simplemente tenerlo bajo una consulta? Lo estoy pidiendo a los fines de determinar el diseño de mi aplicación para saber si debería hacer un esfuerzo adicional para tratar de lograr que todos se ejecuten de manera única.

No estoy seguro de si importa, pero tengo la intención de usar SQL Server.

Respuesta popular

Nadie puede responder realmente a su pregunta porque nadie sabe realmente cómo evalúa "mejor".

Una ventaja del enfoque de ejecución única es que su aplicación realiza menos viajes redondos al servidor. En otras palabras, hay menos sobrecarga y menos espera. Si su aplicación no tiene una conexión rápida y confiable a la instancia, eso podría importar mucho . Una desventaja es que su aplicación podría no ser capaz de identificar qué declaración causa un error si ocurre.

Además, también puede estructurar una única instrucción para insertar varias filas, en lugar de crear varias instrucciones en una cadena. P.ej,

insert dbo.FOO (ID, Name) values (1, 'Test'), (2, 'ABC'); 

Eso hace una diferencia? Una ligera, pero tú eres el juez. Estos son ejemplos simplistas y no hay una única respuesta / enfoque que sea "mejor" para todas las situaciones. Y debe tener en cuenta los límites de sus transacciones: ¿desea que ambas filas se inserten como una sola unidad de trabajo (de modo que si una falla, la otra no se inserta también)?



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é