Factoriser différents types de chaînes de connexion

ScreenHunter_469 Jul. 18 15.17

Si vous travaillez sur un projet .Net qui a plusieurs années d’histoire derrière lui, il est probable qu’il soit composé de plusieurs couches d’accès aux données, et donc, de plusieurs types de chaînes de connexion.

Voici un exemple : le projet contient un accès « à l’ancienne », à base de DataSet. Puis, plus récemment, un accès via Entity Framework a été mis en place (afin de moderniser l’application). Enfin, un module d’un autre projet doit venir se greffer dessus. Hors, ce dernier utilise un accès de type OLEDB.

Au lieu de se retrouver avec trois chaînes de connexions dans le fichier Web.config, on va pouvoir toutes les factoriser vers une seule ; en l’occurrence, celle d’Entity Framework.

En plus de « clarifier » le Web.config et d’éviter les oublis de paramétrage, cela va notamment être utile pour un projet de tests unitaires (afin d’éviter, là aussi, les doublons inutiles).

On va donc tout d’abord récupérer la chaîne de connexion Entity Framework à partir de son nom :

string cnxStr = GetConnectionStringFromEntitiesName("MonProjetEntities");
public static string GetConnectionStringFromEntitiesName(string name)
{
    string returnValue = null;
 
    ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings[name];
 
    if (settings != null)
    {
        returnValue = settings.ConnectionString;
    }
 
    return returnValue;
}

On extrait simplement la valeur de l’attribut « connectionString » à partir de la valeur de l’attribut « name » passé en paramètre.

Puis, si vous voulez utiliser une chaîne de connexion pour un projet qui utilisait initialement un accès de type ADO.Net, utilisez la fonction décrite ci-dessous comme ceci :

string cnxStr = GetConnectionStringFromEntitiesNameForAdoDotNet("MonProjetEntities");
public static string GetConnectionStringFromEntitiesNameForAdoDotNet(string name)
{
    string raw = GetConnectionStringFromEntitiesName(name);
 
    var tab = raw.Split('\"');
 
    return tab[1];
}

On prend ici la valeur écrite entre les caractères HTML « " », qui sont traduits lors du chargement du Web.config vers les caractères standards « quotes » (\"), d’où la division (split) sur ces derniers.

Enfin, si votre projet utilisait un accès de type OLEDB, telles des poupées russes (ou un extrait d’Inception), utilisez les fonctions comme ceci :

string cnxStr = GetConnectionStringFromEntitiesNameForOleDb("MonProjetEntities");
public static string GetConnectionStringFromEntitiesNameForOleDb(string name)
{
    string raw = GetConnectionStringFromEntitiesNameForAdoDotNet(name);
 
    string result = "Provider = SQLOLEDB;" + raw;
 
    return result;
}

Ici, c’est un peu plus simple. A partir de la chaîne de connexion ADO, on ajoute simplement une chaîne de caractères décrite ci-dessus en préfixe.

Voilà, vous y verrez désormais un peu plus clair dans votre Web.config et vous pourrez continuer à maintenir votre vieux coucou en attendant la refonte complète !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.