SqlDataReader
реализует интерфейс IDataReader
.Как и все остальные драйверы ADO.NET (Oracle, MySql и т. Д.).Вы можете использовать IDataReader
, так что если вы когда-нибудь планируете изменить ядро базы данных, вам не нужно переписывать все ваши ссылки SqlDataReader
.
То же самое относится к IDbConnection
, IDbCommand
и т. д. Конечно, когда создает соединение, вам нужно будет указать, какой движок вы используете, но кроме этого вам никогда не придется явно определять, какой движок базы данных вы используете.
Обратите внимание, что IDataReader
не имеет свойства HasRows
, и вы должны использовать методы Create...()
для создания команд и параметров:
IDbCommand command = myDbConnection.CreateCommand();
Вместо:
SqlCommand command = new SqlCommand(myDbConnection);
РЕДАКТИРОВАТЬ: вместо использования интерфейсов вы можете использовать абстрактный класс DbConnection
, от которого наследуются все поставщики ADO.NET.Они предоставляют некоторые дополнительные функции, такие как получение информации о схеме, и вышеупомянутое свойство HasRows
для DbDataReader
.См. http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/759fa77b-8269-4c4a-be90-3c2bdce61d92/, почему интерфейс не поспевает за абстрактным классом.