Je n'ai jamais été un grand fan de mettre des chaînes de connexion sql dans les fichiers de configuration pour le logiciel. Les utilisateurs ont l'habitude de les gâcher par curiosité ou stupidité (ou une combinaison des deux). J'aime mettre toutes mes chaînes de connexion (développement, modèle, production, peu importe) dans les propriétés de ma bibliothèque d'accès aux données, et y inclure une classe ConfigurationSettings que j'utilise pour y accéder en fonction d'une propriété définie par le consommateur Application:
public class ConfigurationSettings
{
public static string MyConnectionString
{
get
if(ConfigurationSettings.TestMode)
return Properties.Settings.Default.MyConnectionStringTest;
else
return Properties.Settings.Default.MyConnectionStringProd;
}
}
// I typically only have test and not-test. This could
// easily be some other combination of values to satisfy
// multiple environments.
public static bool TestMode { get; private set;}
}
cela me permet d'appeler les propriétés statiques de cette classe par un nom commun et ont toutes les chaînes de connexion disponibles en fonction de certains critères. Cela permet à vos ensembles de données spécifiques, entités, quel que soit le modèle de données que vous utilisez, de se préoccuper des chaînes de connexion et les paramètres peuvent être compilés dans le fichier .dll (et ne plus avoir à se soucier d'eux). Cette méthode peut également être modifiée pour tirer les paramètres d'un app.config (ce que je fais pour les sites ASP.Net) dans une méthode similaire. MISE À JOUR: Il n'y a vraiment pas de manière "correcte" comme vous le supposez. Le fichier app.config a été conçu pour contenir les paramètres de configuration modifiables sans avoir à reconstruire l'application. Les paramètres de propriété ont été conçus pour contenir des paramètres qui ne sont pas modifiables. Donc les deux sont parfaitement valables. Probablement le moyen le plus "correct" est un moyen qui a du sens à la fois pour votre application et pour votre équipe de développement.
Pourquoi ne pas utiliser le préprocesseur '# DEBUG ... # endif' au lieu de bools? Ensuite, vous ne pouvez pas oublier de changer le booléen :) – jgauffin
@jgauffin - Eh bien, c'est dans une bibliothèque, et il permet à l'application d'hébergement de définir si c'est un test ou non. Ce n'est pas forcément en mode débogage. Il permet à l'exécuteur de déterminer le jeu de paramètres à exécuter. C'est vraiment une décision sur ce qui était le mieux pour les méthodes de notre équipe et celle-ci a été gagnée. –