2016-07-04 12 views
2

のための本当の私は、この単純化されたクラスを持っている:コンテキスト接続を使用する= SqlConnectionの

public abstract class BaseDaService 
{ 
    private readonly string _connectionString; 

    protected BaseDaService(string connectionString) 
    { 
     _connectionString = connectionString; 
     } 

     protected IDbConnection OpenConnection() 
    { 
     IDbConnection connection = new SqlConnection(_connectionString); 
     connection.Open(); 
     return connection; 
     } 
} 

ここでは、接続文字列は、設定ファイルから来ています。私がやっている間、私のconfigファイルからの資格情報を使用したいと思います:

new SqlConnection("context connection=true")

は、私はこれを達成するためのIDbConnectionの「接続」のインスタンスを設定ファイル内の接続文字列を適応させるか、操作することができますか?

+0

これは機能しますか? 'SqlConnectionStringBuilder sqlb =新しいSqlConnectionStringBuilder(_connectionString); sqlb.ContextConnection = true; ' – pijemcolu

+0

ありがとう、これを探していた。それは行くだろう。 – cs0815

答えて

1

私はApp.configファイルを変更するもちろんSqlConnectionStringBuilderクラス

// With a default parameter set to false you can still use 
// the same code as before and change only the spots where 
// the context is required 
protected IDbConnection OpenConnection(bool useContext = false) 
{ 

    string newConString = _connectionString; 
    if(useContext) 
    { 
     SqlConnectionStringBuilder scs = new SqlConnectionStringBuilder(_connectionString); 
     scs.ContextConnection = true; 
     newConString = scs.ToString(); 
    } 
    IDbConnection connection = new SqlConnection(newConString); 
    connection.Open(); 
    return connection 
} 

を使用することは好みの問題だけであることを示唆しています。

0

SqlConnectionStringBuilderを使用すると、すでに設定ファイルから取得した接続文字列を変更できます。つまり、元の接続文字列を読み取り専用にすることもできます。

SqlConnectionStringBuilder sqlb = new SlConnectionStringBuilder(_connectionString); 
sqlb.ContextConnection = true; 
string modifiedConnString = sqlb.ToString(); 
関連する問題