2017-09-28 4 views
0

私は、以下の構成と私の設定ファイルを持っている:あなたが見ることができるように、私はデフォルトの接続としてmyConnectionStringを使用するデフォルトdataconfigurationを設定しているは、どのようにC#でweb.configファイルからデフォルトの接続文字列にアクセスするには

<?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> 

文字列が、背後にあるコードでは、私はそう下記のコードでmyConnectionString

つまり名前を提供しなくても、この接続文字列にアクセスする方法(C#の):

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

SqlConnection cnn = new SqlConnection(connectionString); 

SqlBulkCopy sbc = new SqlBulkCopy(cnn); 

接続文字列の名前のハードコーディングをスキップします。

+0

編集:私はあなたの正確なApp.configファイルとLINQPadでそれをテストしている、結果を得ましたデフォルト設定を取得します。 – Crowcoder

+0

残念ながら私は実際にはSqlBulkCopyを使用してデータを一括して挿入しています:SqlConnection cnn = new SqlConnection(connectionString); // SqlBulkCopyオブジェクトの初期化 SqlBulkCopy sbc = new SqlBulkCopy(cnn); – tavier

+0

次に、dataConfigurationセクションを手動で参照して、名前の代わりにインデックスを使用して接続文字列を参照できる名前または信頼性の低い名前を取得できます。 – Crowcoder

答えて

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

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

これは、カスタム設定セクションとDatabaseSettingsクラスの一般的な使用方法からわかります。あなたは、データアクセスアプリケーションブロックを使用している場合は、接続パラメータに空の文字列を渡すと、それは意志

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

+1

魅力的な作品です。おかげで@ジェリーノ – tavier

関連する問題