Получение SqlClientFactory
Область применения: платформа .NET Framework
.NET Standard
Процесс получения DbProviderFactory состоит из передачи сведений о поставщике данных классу DbProviderFactories. На основе этих сведений метод GetFactory создает строго типизированную фабрику поставщика. Например, чтобы создать SqlClientFactory, можно передать GetFactory
строку с именем поставщика, указанным как "Microsoft.Data.SqlClient".
Другая перегрузка метода GetFactory
принимает DataRow. После создания фабрики поставщика можно использовать ее методы для создания дополнительных объектов. К методам фабрики SqlClientFactory
относятся CreateConnection, CreateCommand и CreateDataAdapter.
Регистрация SqlClientFactory
Чтобы получить объект SqlClientFactory с помощью класса DbProviderFactories в .NET Framework, необходимо зарегистрировать его в файле 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 определяет базовый поставщик данных. Этот трехкомпонентный синтаксис имени также применяется при создании новой фабрики и для определения поставщика в файле конфигурации, чтобы имя поставщика вместе со связанной с ним строкой соединения можно было получать во время выполнения.
Примечание.
Так как в .NET Core отсутствует поддержка GAC или глобальной конфигурации, объект SqlClientFactory должен быть зарегистрирован путем вызова метода RegisterFactory в проекте.
В следующем образце кода показано использование синтаксиса SqlClientFactory в основном приложении .NET.
private static DbProviderFactory GetFactory()
{
// register SqlClientFactory in provider factories
DbProviderFactories.RegisterFactory("Microsoft.Data.SqlClient", SqlClientFactory.Instance);
return DbProviderFactories.GetFactory("Microsoft.Data.SqlClient");
}