C #, puis-je INSERT et DELETE à partir de la table SQL Server en le lisant

Tout est tout à fait dans le titre.

Je lis le résultat d'un SqlCommand (qui est une requête de jointure de table1 et table2).

  using (SqlCommand cmd = new SqlCommand(sqlCommand, eve.Database)) { using (SqlDataReader sdr = cmd.ExecuteReader()) { //Performing some tasks } } 

En fait, dans la partie "exécution de certaines tâches", je fais quelques INSERT et DELETE sur une de mes tables jointes (nous parlerons de table1 par exemple).

Je suis actuellement stagiaire dans une entreprise, le code fonctionne bien sur une petite quantité de données mais mon tuteur me dit que ce n'est pas une bonne idée car je peux avoir quelques problèmes de lecture et d'écriture dans ma table à cause des verrous SQL Server .

J'appendais que pour triggersr mon INSERT et DELETE, j'ouvre juste une nouvelle connection (donc je n'utilise pas la principale) et ExecuteNonQuery() appel ExecuteNonQuery() .

 using (SqlConnection cnx = Piivo.Utils.Open(Configuration)) { SqlCommand cmd = new SqlCommand(command, cnx); cmd.ExecuteNonQuery(); } 

Vous pouvez si et seulement si, la command Select a été complètement exécutée, mais vous ne pouvez pas insert ou supprimer sur la même table, si la command select est toujours en cours d'exécution, puisqu'ils exécutent tous les deux un SqlCommand dans une table spécifique qui a besoin une connection "unique" ouverte.

Connu le fait que je ne peux pas tester cela sur l'énorme set de données en ce moment, je vais devoir me protéger de ces verrous. Je suppose que je vais devoir stocker le résultat de mon SELECT dans un object DataTable, fermer ma connection et puis je serai en mesure d'INSERT et DELETE en toute security. Cependant, je peux avoir beaucoup de résultats dans ce SELECT, je ne suis pas sûr si cette solution sera optimale mais je n'ai pas le choix.

Merci pour les explications.