Получение SqlClientFactory

Применимо: платформа .NET Framework .NET Standard

Скачать ADO.NET

Процесс получения 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");
}

См. также