Compartilhar via


Obter um SqlClientFactory

Aplicável a: .NET Framework .NET .NET Standard

Baixar ADO.NET

O processo de obter DbProviderFactory envolve passar informações sobre um provedor de dados para a classe DbProviderFactories. Com base nessas informações, o método GetFactory cria uma fábrica de provedor fortemente tipada. Por exemplo, para criar um SqlClientFactory, você pode transmitir uma cadeia de caracteres para GetFactory com o nome do provedor especificado como "Microsoft.Data.SqlClient".

Outra sobrecarga de GetFactory utiliza DataRow. Uma vez que você criar a fábrica de provedor, poderá usar seus métodos para criar objetos adicionais. Alguns dos métodos de SqlClientFactory incluem CreateConnection, CreateCommand e CreateDataAdapter.

Registrar o SqlClientFactory

Para recuperar o objeto SqlClientFactory pela classe DbProviderFactories no .NET Framework, é necessário registrá-lo em um arquivo App.config ou web.config. O fragmento do arquivo de configuração a seguir mostra a sintaxe e o formato para 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>  

O atributo invariant identifica o provedor de dados subjacente. Essa sintaxe de nomenclatura de três partes também é usada na criação de uma nova fábrica e para identificar o provedor em um arquivo de configuração de aplicativo, de forma que o nome do provedor, juntamente com a cadeia de conexão associada, possa ser recuperado em tempo de execução.

Observação

No .NET Core, como não há nenhum GAC ou suporte de configuração global, o objeto SqlClientFactory deve ser registrado chamando o método RegisterFactory no projeto.

O exemplo a seguir mostra como usar o SqlClientFactory em um aplicativo .NET Core.

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

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

Consulte também