Obter um SqlClientFactory
Aplicável a: .NET Framework .NET .NET Standard
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");
}