Создание объектов с помощью фабрики

Получив в свое распоряжение фабрику, вы можете создавать другие объекты, такие как экземпляры Connection и Command, используя для этого методы DbProviderFactory.CreateXxx(). Например, метод CreateConnection() возвращает объект Connection для вашего провайдера данных. И опять же вы должны исходить из того, что не знаете, какой именно провайдер будет использован, поэтому взаимодействовать с объектами, созданными фабрикой, только через стандартизованный базовый класс.

В табл. 7.8 представлено краткое руководство, описывающее методы, которые необходимы для создания объектов доступа к данным каждого типа, и какой базовый класс можно использовать, чтобы безопасно ими манипулировать.

Таблица 7.8. Интерфейсы стандартных объектов ADO.NET

 

Тип объекта Базовый класс Пример Метод DbProviderFactory
Connection

DbConnection

SqlConnection

CreateConnection()
Command

DbCommand

SqlCommand

CreateCommand()
Parameter

DbDataParameter

SqlParameter

CreateParameter()
DataReader

DbDataReader

SqlDataReader

CreateDataReader()
DataAdapter

DbDataAdapter

SqlDataAdapter

CreateDataAdapter()

На заметку! Как объяснялось ранее в этой главе, специфичные для провайдера объекты также реализуют определенные интерфейсы (вроде IDbConnection). Однако поскольку некоторые объекты используют более одного интерфейса ADO.NET (например, DataReader реализует как IDataRecord, так и IDataReader), применение базового класса упрощает эту модель.

Запрос с независимым от провайдера кодом

Чтобы лучше понять, как все это работает вместе, рассмотрим простой пример. В этом разделе вы увидите, как можно выполнить запрос и отобразить результаты, используя независимый от провайдера код. Фактически этот пример представляет собой измененную версию страницы, которую вы видели ранее на рис. 7.3. Единственное отличие в том, что она более не привязана жестко к провайдеру данных SQL Server.

Первый шаг — настроить в файле web.config строку соединения, имя провайдера и текст запроса для примера:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <connectionStrings>
    <add name="Northwind" connectionString=
      "Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI"/>
  </connectionStrings>
  <appSettings>
    <add key="factory" value="System.Data.SqlClient" />
    <add key="employeeQuery" value="SELECT * FROM Employees" />

предыдущая    следующая страница   оглавление

334

Hosted by uCoz