Сценарий: создание приложения для учебных целей и попытка сделать его независимым от базы данных.
Я рассмотрел архитектуру пива совсем немного, где каждая база данных имеет свою собственную dal смесь SqlCommands и DataReaders и т.д. Я не уверен, что это правильно или неправильно, но в целом с точки зрения обслуживания, скорости и т.д. что архитектурная сторона приложений .net для меня совсем нова, вы бы склонялись к тому, чтобы пересказывать свои собственные специфические классы, такие как пивная или использовать что-то вроде dbProviderFactory, где уже есть много функций?
Есть ли какие-либо плюсы и минусы с использованием общих классов в System.Data.Common, таких как DbCommand, DbDataReader, против конкретных классов SqlCommand, SqlDataReader и т.д.
Спасибо заранее.
Насколько я знаю, использование DbDataReader напрямую происходит быстрее. Но он не расширяется, если вы хотите изменить свой интерфейс. (например, ваши проекты Winforms и Webforms используют один и тот же DAL).
В моей точке зрения, если вы хотите больше гибкости, вы, вероятно, потеряете производительность. Дело в том, что вы (как разработчик) отвечаете за баланс производительности и сложности/расширяемости. Например, предположим, что вы разрабатываете приложение winforms для компании. Вы уверены, что компания не изменит поставщика своих данных (например, от SQL Server до Oracle). Тогда нет необходимости разрабатывать вашу программу, чтобы иметь возможность подключаться к различным поставщикам данных. Как говорится: KISS. (Keep It Simple Stupid!; P)