Necesitaba insertar a granel con arco iris apuesto

.net c# dapper dapper-extensions dapper-rainbow

Pregunta

Estoy usando las extensiones dapper rainbow database.cs,

private void insertList(IEnumerable<myObject> list)
    {
          using (SqlConnection conn = new SqlConnection(connectionString))
        {
            var db = myDB.Init(conn, commandTimeout: 100);
            db.myTable.tableName = "ds.myTable";
            Parallel.ForEach(dsList, a => db.myTableInsert(a)
                        );
            db.Dispose();
        }
    }

Esto no funcionará, creo que necesito abrir y cerrar la conexión dentro de Parallel.ForEach. ¿Es esa la manera de escribir para hacerlo?

Quería usar esta extensión, es muy útil y útil, pero tengo este problema de insertar una lista. No pude encontrar nada en línea sobre el uso de esta extensión y el uso de una lista también.

Respuesta aceptada

En general, las conexiones a la base de datos NO son seguras para hilos, de modo que hacer inserciones en paralelo en la misma conexión como esa puede causar problemas.

Entonces, yo diría que sí, que necesitaría abrir y cerrar la conexión dentro de Parallel.ForEach() . Es posible que desee comparar eso también. No estoy del todo convencido de que hacer insertos en paralelo así con múltiples conexiones de bases de datos sea más rápido que hacerlo en un ciclo regular en una sola conexió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é