J'avais besoin de faire l'insertion en vrac avec l'arc-en-ciel pimpant

.net c# dapper dapper-extensions dapper-rainbow

Question

J'utilise les extensions 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();
        }
    }

Cela ne fonctionnera pas, je pense que je dois ouvrir et fermer la connexion à l'intérieur de Parallel.ForEach. Est-ce la façon d'écrire pour le faire?

Je voulais utiliser cette extension, très utile et pratique, mais ayant ce problème d'insérer une liste. Je n'ai rien trouvé en ligne sur l'utilisation de cette extension et sur l'utilisation d'une liste.

Réponse acceptée

En règle générale, les connexions à la base de données ne sont pas sécurisées pour les threads, donc les insertions en parallèle sur la même connexion, comme cela, sont inévitables.

Donc, je dirais que oui, vous devez ouvrir et fermer la connexion dans Parallel.ForEach() . Vous voudrez peut-être évaluer cela aussi. Je ne suis pas entièrement convaincu que faire des insertions en parallèle comme cela avec plusieurs connexions de base de données serait plus rapide que de les faire en boucle normale sur une seule connexion.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi