データベースへのコネクションを生成する場合、次のような実装はソースに接続対象のDBへの依存を持ち込んでしまいます。
using(var connection = new SqlConnection(...))
App.configの接続情報を利用して、それを回避することができます。自分でもしょっちゅう忘れてしまうのでここにメモしておきます。
App.Configにつぎのように接続文字列を指定した場合
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="AdventureWorks2017" connectionString="Data Source=localhost;Initial Catalog=AdventureWorks2017;Integrated Security=True;" providerName="System.Data.SqlClient"/> </connectionStrings>
次のようなコードを記載することでDbConnectionのインスタンスを生成できます。
var settings = ConfigurationManager.ConnectionStrings["AdventureWorks2017"]; var factory = DbProviderFactories.GetFactory(settings.ProviderName); using (var connection = factory.CreateConnection()) { connection.ConnectionString = settings.ConnectionString; connection.Open();
DbProviderFactoriesから取得したDbProviderFactoryを利用することで、コードから接続するDB製品への依存なくDbConnectionのインスタンスを生成できます。
以上です。