2017-09-28 8 views

Répondre

0

La différence dépend de l'implémentation IDbCommand; souvent les performances sont les mêmes lorsque ExecuteScalar exécute en interne le même code que ExecuteReader: le bon exemple est SqlCommand: les deux méthodes appellent la méthode interne RunExecuteReader, il n'y a donc aucune différence de performance.

De nombreuses implémentations IDbCommand populaires fonctionnent de la même manière que SqlClient (MySqlConnector, Npgsql, Microsoft.Data.Sqlite), mais potentiellement il est possible d'avoir connecteur ADO.NET qui offre de meilleures performances pour ExecuteScalar. En résumé, si vous appelez la classe concrète (par exemple, SqlCommand), vous pouvez utiliser ExecuteReader ou ExecuteScalar. Si vous utilisez l'interface IDbCommand (disons, dans la bibliothèque réutilisable) et que vous ne connaissez rien à l'utilisation de l'implémentation d'ExecuteScalar, vous pouvez obtenir des avantages en termes de performances avec un connecteur ayant une implémentation spécialement optimisée.