J'utilise IDBCommand
pour ma couche de base de données afin de passer à d'autres fournisseurs de base de données que le SqlDataProvider
.
SqlCommand
a toutes les méthodes asynchrones comme ExecuteNonQueryAsync mais IDBCommand
ne contient pas de méthode asynchrone.
À l'avenir, nous pourrions avoir besoin de passer à un autre fournisseur de données autre que le Sql
je ne peux pas utiliser SqlCommand
directement.
Je pense juste à implémenter mes propres versions asynchrones. Y aurait-il un problème de performance si je mettais en œuvre mes propres versions ? Ou est-il préférable d'utiliser les méthodes asynchrones implémentées par Microsoft, qui sont disponibles pour les applications de l'entreprise ? SqlCommand
objet ?
De la manière suivante, j'ai mis en œuvre mon Async
méthodes. Ce qui suit est une méthode Synchronous :
public int ExecuteNonQuery(CommandType commandType, string commandText)
{
PrepareCommand(commandType, commandText);
var noOFRowsAffected = _dbCommand.ExecuteNonQuery();
SetParameters(_dbCommand.Parameters);
return noOFRowsAffected;
}
Le texte suivant est le Async
version :
public async Task<int> ExecuteNonQueryAsync(CommandType commandType, string commandText)
{
PrepareCommand(commandType, commandText);
var noOFRowsAffected = await Task.Factory.StartNew(() =>
{
return _dbCommand.ExecuteNonQuery();
});
SetParameters(_dbCommand.Parameters);
return noOFRowsAffected;
}
Veuillez noter que la gestion des exceptions sera assurée par l'appelant. appelant.
Quelqu'un peut-il me donner la bonne direction ? Est-ce une façon correcte de faire l'opération asynchrone ou dois-je utiliser l'implémentation microsoft ? SqlCommand
d'utiliser ses propres méthodes ? Toute aide est vraiment appréciée. Merci d'avance :)