Когда я пишу приложение, я использую интерфейсы System.Data (IDbConnection, IDbCommand, IDataReader, IDbDataParameter и т. Д.). Я делаю это, чтобы уменьшить зависимости поставщиков. Если, я не делаю простое тестовое приложение, это просто похоже на этическую вещь, когда вы консультируетесь.IdbConnection vs SqlConnection
Однако, похоже, что весь код, который я вижу, использует классы пространства имен System.Data.SqlClient или другие классы конкретного поставщика. В журналах и книгах легко отразить влияние Microsoft и их маркетинг, чтобы программировать только против SQLServer. Но это похоже на почти весь код .NET, который я вижу, использует определенные классы SQLServer.
Я понимаю, что конкретные классы поставщиков имеют больше функциональных возможностей, например добавление параметра к объекту SqlCommand - это один из методов, где добавление его в IDbCommand является раздражающим 4+ строками кода. Но затем снова; Написание небольшого вспомогательного класса для этих ограничений довольно просто.
Я также задался вопросом, связано ли программирование с интерфейсами, когда SQLServer является текущим целевым клиентом, является чрезмерной технологией, поскольку это не требуется немедленно. Но я не думаю, что это связано с тем, что стоимость программирования против интерфейсов настолько низкая, что, поскольку снижение зависимости от поставщиков обеспечивает такую огромную выгоду.
Используете ли вы конкретные классы данных или интерфейсы поставщика?
РЕДАКТИРОВАТЬ: Чтобы подытожить некоторые из приведенных ниже ответов и задумайтесь над некоторыми соображениями, которые я имел при чтении.
Возможные подводные камни в использовании интерфейсов для поставщика нейтральности:
- Vendor определенных ключевых слов, встроенных в селектах заявления (все мои модули, UPD, & дель находятся в проках, так что не проблема)
- Прямая привязка базы данных , вероятно, вызовет проблемы .
- Если ваше соединение было централизовано, то в любом случае необходимо назвать определенному классу поставщика.
Положительные причины использовать интерфейсы:
- В моем опыте способность (даже если не осуществляется), чтобы перейти к другому поставщику всегда была оценен заказчиком.
- Использование интерфейсы в повторно используемых библиотеках кода
Объекты db должны быть как минимум «скорректированы». Но я не учитывал оптимизацию и ключевые слова поставщика в SQL. Кроме того, в упомянутом слое синтаксиса это записывает ваш SQL? Если да, то это окупилось, я никогда не получал, чтобы это окупилось раньше. – 2008-12-08 19:51:28