76 votes

MultipleActiveResultSets = Vrai ou plusieurs connexions?

J'ai un C # dans lequel je crée un lecteur sur une connexion ( ExecuteReader ), puis pour chaque ligne de ce lecteur, effectuez une autre commande (avec ExecuteNonQuery ). Dans ce cas, est-il préférable que j'utilise MultipleActiveResultSets=True sur ma connexion ou que j'utilise plusieurs connexions?

88voto

Kev Points 60744

Plusieurs MARS) a été ajouté spécialement pour ce type d'opération, de sorte que vous n'avez pas à avoir deux connexions ouvertes en même temps pour être en mesure de lire à partir d'un SqlDataReader ET exécuter d'autres lots.

MARS est compatible avec SQL Server 2005 et au-dessus. Pour citer MSDN docs:

Avant l'introduction de Plusieurs MARS), les développeurs a utiliser plusieurs connexions ou les curseurs côté serveur pour résoudre certains scénarios.

Pour plus d'infos, voir:

MSDN Library - MARS Aperçu

Exemple de lecture et de mise à jour des données:

MSDN Library - Manipulation de Données (MARS), faites défiler jusqu'à " la Lecture et la mise à Jour des Données avec MARS

17voto

Rune Grimstad Points 17775

Pour autant que je sache la raison pour laquelle MARS a été ajouté, alors oui, je pense que vous devriez l’utiliser.

0voto

dmajkic Points 2694

Le meilleur moyen de tester ceci est de lancer SQLServer Profiler et de voir ce qui se passe réellement côté serveur.

Je suppose que cela ne sera pas mieux puisque vous utilisez ExecuteNonQuery (). Donc, en fait, vous ne travaillez pas avec plusieurs résultats.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X