Когда я пишу приложение, я использую интерфейсы System.Data (IDbConnection, IDbCommand, IDataReader, IDbDataParameter и т. Д.). Я делаю это, чтобы уменьшить зависимость от поставщиков. Если только я не делаю простое тестовое приложение, это просто похоже на этическую вещь, когда нужно консультироваться.
Однако, похоже, что весь код, который я вижу, использует классы пространства имен System.Data.SqlClient или классы, специфичные для других поставщиков. В журналах и книгах легко объяснить это влиянием Microsoft и их маркетинговой ориентацией на программирование только против SQLServer. Но он выглядит так, как будто почти весь код .NET, который я вижу, использует специальные классы SQLServer.
Я понимаю, что классы, относящиеся к поставщику, обладают большей функциональностью, например, добавление параметра к объекту SqlCommand - это один из методов, при котором добавление его в IDbCommand вызывает раздражающие строки кода 4+. Но затем снова; написать небольшой вспомогательный класс для этих ограничений довольно просто.
Мне также было интересно, является ли программирование с использованием интерфейсов, когда SQLServer является текущим целевым клиентом, слишком сложным, поскольку это не требуется немедленно. Но я не думаю, что это так, поскольку затраты на программирование с использованием интерфейсов настолько низки, а снижение зависимости от поставщиков дает такое огромное преимущество.
Используете ли вы специфичные для поставщика классы данных или интерфейсы?
РЕДАКТИРОВАТЬ: Чтобы обобщить некоторые из ответов ниже, и добавить некоторые мысли, которые я имел, читая их.
Возможные подводные камни в использовании интерфейсов для нейтральности поставщиков:
- Ключевые слова поставщика, встроенные в
ваши утверждения SELECT (все мои модули,
upd, & del в procs, так что это
не проблема)
- Связывание напрямую
база данных, вероятно, приведет к
проблемы.
- Если только ваша связь
инстанцирование централизовано,
класс конкретного поставщика потребуется
все равно позвони.
Положительные причины использования интерфейсов:
- По моему опыту способность (даже
если не осуществлено), чтобы перейти к
другой поставщик всегда был
ценится заказчиком.
- Использование интерфейсов в повторно используемых библиотеках кода