2017-09-28 13 views
0

J'ai mon fichier de configuration avec des configurations ci-dessous:Comment accéder à la chaîne de connexion par défaut de web.config C#

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data" /> 
    </configSections> 
    <dataConfiguration defaultDatabase="myConnectionString" /> 
    <connectionStrings> 
    <add name="myConnectionString" connectionString="Data Source=mydatasource;Max Pool Size=100;Pooling=true; Initial Catalog=MyDB;User ID=Myuser;Password=Password;Connection Timeout=60" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /> 
    </startup> 
</configuration> 

Comme vous pouvez le voir, j'ai mis la valeur par défaut dataconfiguration utiliser myConnectionString comme la connexion par défaut chaîne, mais dans le code derrière (C#) comment puis-je accéder à cette chaîne de connexion sans avoir à fournir le nom-à-dire myConnectionString

donc dans le code ci-dessous:

string connectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString; 

SqlConnection cnn = new SqlConnection(connectionString); 

SqlBulkCopy sbc = new SqlBulkCopy(cnn); 

Je voudrais ignorer le codage en dur le nom de la chaîne de connexion.

+0

Si vous utilisez le bloc d'application d'accès aux données que vous passez une chaîne vide pour le paramètre de connexion et il sera ramasser la configuration par défaut. – Crowcoder

+0

Malheureusement je ne suis pas, je suis en train d'utiliser le SqlBulkCopy pour insérer des données en masse: SqlConnection cnn = new SqlConnection (connectionString); // Initialisation de l'objet SqlBulkCopy SqlBulkCopy sbc = new SqlBulkCopy (cnn); – tavier

+0

Ensuite, vous pouvez référencer la section dataConfiguration manuellement et obtenir le nom ou (pas si fiable) vous pouvez référencer les chaînes par index au lieu du nom. – Crowcoder

Répondre

2
var dataConfig = (Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings)System.Configuration.ConfigurationManager.GetSection(
    "dataConfiguration"); 

string connectionString = ConfigurationManager.ConnectionStrings[dataConfig.DefaultDatabase].ConnectionString; 

C'est ce que je peux dire de l'utilisation typique des sections de configuration personnalisées et de la classe DatabaseSettings.

EDIT: Je l'ai testé en LINQPad avec votre app.config exacte, obtenu résultat:

Data Source=mydatasource;Max Pool Size=100;Pooling=true; Initial Catalog=MyDB;User ID=Myuser;Password=Password;Connection Timeout=60

+1

Fonctionne comme un charme. Merci @Gerino – tavier