vendredi 3 juin 2011

DbConnectionStringBuilder

Il y a plus de 10000 types définis dans le Framework .NET. Il est donc logique que quelques uns d’entre eux soient à la fois très utiles et méconnus. DbConnectionStringBuilder (et ses classes spécialisées comme SqlConnectionStringBuilder pour SQL Server) est sans doute l’un d’entre eux. Il permet de manipuler des chaines de connexion pour les providers communs par code (propriétés et accesseurs) sans avoir à traiter directement la chaine de caractères. Le code est alors plus lisible et il y a moins de risque d’erreur.

Dans la plupart des cas, les chaines de connexions définies habituellement dans le fichier de configuration n’ont pas besoin d’être modifiées à la volée. Néanmoins, certaines situations peuvent justifier l’utilisation de ces classes :

  • L’application accède à de multiples bases de données et il n’est pas possible de déterminer à la compilation quelle(s) base(s) de données sont sollicitées.
  • L’application accède à une base de données pour laquelle les informations nécessaires à la connexion ne sont pas connues lors de la compilation, par exemple parce qu’elles sont fournies par l’utilisateur.
  • L’application utilise des logins/passwords différents pour la connexion à la base de données en fonction des droits accordés à l’utilisateur connecté.
  • Ecriture de code pour l’industrialisation d’un logiciel automatisant la configuration en fonction des plateformes développement/intégration/préproduction/production.

En l’occurrence, l’utilisation de SqlConnectionStringBuilder s’est imposée pour basculer dynamiquement entre SQL Server et SQL Azure, à l’aide d’un code de ce type :

private string connectionString = null;

private string userIdAzure = "*****";
private string serverAzure = "*****";
bool azureContext = true;

public DataAccess()
{
connectionString = ConfigurationManager.ConnectionStrings["Connexion"].ConnectionString;
if (azureContext)
{
SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder(connectionString);
scsb.DataSource = serverAzure;
scsb.UserID = userIdAzure;
connectionString = scsb.ConnectionString;
}
}



On voit que le champ azureContext permet de basculer dynamiquement entre SQL Server et SQL Azure, ce qui est parfaitement envisageable tant que les limitations inhérentes à SQL Azure sont respectées.


Note : Dans mon cas, le mot de passe et le nom de la base de données sont identiques pour la base SQL Server et la base SQL Azure ; seuls l’User Id et le nom du serveur ont eu besoin d’être modifiés.

Aucun commentaire:

Enregistrer un commentaire