public interface IDbConnection : IDisposable
{
string ConnectionString { get; set; }
int ConnectionTimeout { get; }
string Database { get; }
ConnectionState State { get; }
IDbTransaction BeginTransaction();
IDbTransaction BeginTransaction(IsolationLevel il);
void ChangeDatabase(string databaseName);
void Close();
IDbCommand CreateCommand();
void Open();
void Dispose();
}
Роль интерфейса IDbTransaction
Перегруженный метод
BeginTransaction()
, определенный в интерфейсе
IDbConnection
, предоставляет доступ к
объекту транзакции поставщика. Члены, определенные интерфейсом
IDbTransaction
, позволяют программно взаимодействовать с транзакционным сеансом и лежащим в основе хранилищем данных:
public interface IDbTransaction : IDisposable
{
IDbConnection Connection { get; }
IsolationLevel IsolationLevel { get; }
void Commit();
void Rollback();
void Dispose();
}
Роль интерфейса IDbCommand
Интерфейс
IDbCommand
будет реализован
объектом команды поставщика данных. Подобно другим объектным моделям доступа к данным объекты команд позволяют программно манипулировать операторами SQL, хранимыми процедурами и параметризированными запросами. Объекты команд также обеспечивают доступ к типу чтения данных поставщика данных посредством перегруженного метода
ExecuteReader()
:
public interface IDbCommand : IDisposable
{
string CommandText { get; set; }
int CommandTimeout { get; set; }
CommandType CommandType { get; set; }
IDbConnection Connection { get; set; }
IDbTransaction Transaction { get; set; }
IDataParameterCollection Parameters { get; }
UpdateRowSource UpdatedRowSource { get; set; }
void Prepare();
void Cancel();
IDbDataParameter CreateParameter();
int ExecuteNonQuery();
IDataReader ExecuteReader();
IDataReader ExecuteReader(CommandBehavior behavior);
object ExecuteScalar();
void Dispose();
}
Роль интерфейсов IDbDataParameter и IDataParameter
Обратите внимание, что свойство
Parameters
интерфейса
IDbCommand
возвращает строго типизированную коллекцию, реализующую интерфейс
IDataParameterCollection
, который предоставляет доступ к набору классов, совместимых с
IDbDataParameter
(например, объектам параметров):
public interface IDbDataParameter : IDataParameter
{
// Плюс члены интерфейса IDataParameter.
byte Precision { get; set; }
byte Scale { get; set; }
int Size { get; set; }
}
Интерфейс
IDbDataParameter
расширяет
IDataParameter
с целью обеспечения дополнительных линий поведения:
public interface IDataParameter
{
DbType DbType { get; set; }
ParameterDirection Direction { get; set; }
bool IsNullable { get; }
string ParameterName { get; set; }
string SourceColumn { get; set; }
DataRowVersion SourceVersion { get; set; }
object Value { get; set; }
}
Вы увидите, что функциональность интерфейсов I
DbDataParameter
и
IDataParameter
позволяет представлять параметры внутри команды SQL (включая хранимые процедуры) с помощью специфических объектов параметров ADO.NET вместо жестко закодированных строковых литералов.
Роль интерфейсов IDbDataAdapter и IDataAdapter
Адаптеры данных используются для помещения объектов
DataSet
в хранилище данных и извлечения их из него. Интерфейс
IDbDataAdapter
определяет следующий набор свойств, которые можно применять для поддержки операторов SQL, выполняющих связанные операции выборки, вставки, обновления и удаления:
public interface IDbDataAdapter : IDataAdapter
{
// Плюс члены интерфейса IDataAdapter.
IDbCommand SelectCommand { get; set; }
IDbCommand InsertCommand { get; set; }
IDbCommand UpdateCommand { get; set; }
IDbCommand DeleteCommand { get; set; }
}
В дополнение к показанным четырем свойствам адаптер данных ADO.NET также получает линии поведения, определенные базовым интерфейсом, т.е.
IDataAdapter
. Интерфейс
IDataAdapter
определяет ключевую функцию типа адаптера данных: способность передавать объекты
DataSet
между вызывающим кодом и внутренним хранилищем данных, используя методы
Fill()
и
Update()
. Кроме того, интерфейс
IDataAdapter
позволяет с помощью свойства
TableMappings
сопоставлять имена столбцов базы данных с более дружественными к пользователю отображаемыми именами: