SqlClientFactory の取得

適用対象: .NET Framework .NET .NET Standard

ADO.NET のダウンロード

DbProviderFactory を取得する過程では、データ プロバイダーに関する情報が DbProviderFactories クラスに渡されます。 GetFactory メソッドはこの情報に基づいて、厳密に型指定されたプロバイダー ファクトリを作成します。 たとえば、SqlClientFactory を作成するには、"Microsoft. Data. SqlClient" として指定されたプロバイダー名を持つ文字列 GetFactory を渡すことができます。

GetFactory には、DataRow を引数として受け取るオーバーロードも存在します。 プロバイダー ファクトリを作成すると、対応するメソッドを使って他のオブジェクトを作成できるようになります。 SqlClientFactory のメソッドには、CreateConnectionCreateCommandCreateDataAdapter などがあります。

SqlClientFactory の登録

.NET Framework の DbProviderFactories クラスによって SqlClientFactory オブジェクトを取得するには、それを App.config または web.config ファイルに登録する必要があります。 次の構成ファイル フラグメントは、Microsoft.Data.SqlClient の構文と形式を示しています。

<system.data>
  <DbProviderFactories>
    <add name="Microsoft SqlClient Data Provider"
      invariant="Microsoft.Data.SqlClient"
      description="Microsoft SqlClient Data Provider for SQL Server"
      type="Microsoft.Data.SqlClient.SqlClientFactory, Microsoft.Data.SqlClient, Version=2.0.20168.4, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5"/>
  </DbProviderFactories>
</system.data>  

基になるデータ プロバイダーは invariant 属性によって識別されます。 この 3 つの部分から成る命名構文は、新しいファクトリを作成するときのほか、プロバイダー名とそれに関連付けられた接続文字列を実行時に取得できるようにするために、アプリケーションの構成ファイルでプロバイダーを指定するときにも使用されます。

Note

.NET Core では、GAC もグローバル構成もサポートされていないため、SqlClientFactory オブジェクトを登録するには、プロジェクトで RegisterFactory メソッドを呼び出す必要があります。

次のサンプルは、.NET Core アプリケーションで SqlClientFactory を使用する方法を示しています。

private static DbProviderFactory GetFactory()
{
    // register SqlClientFactory in provider factories
    DbProviderFactories.RegisterFactory("Microsoft.Data.SqlClient", SqlClientFactory.Instance);

    return DbProviderFactories.GetFactory("Microsoft.Data.SqlClient");
}

関連項目