Я приехал из среды, где меня учили использовать объекты и использовать методы ООП, где это возможно, и я полагаю, что это привело меня к определенной дороге и какое-то время влияло на дизайн моей продукции.
Как правило, мой слой доступа к данным имеет несколько классов, которые отображаются на таблицы базы данных, поэтому, если мне нужно отобразить список компаний, у меня будет объект «Компания» и таблица базы данных под названием «компания». Объект компании знает, как создать экземпляр из DataRow из базы данных, прочитанной с помощью запроса типа «SELECT * FROM company WHERE id = x». Поэтому, когда бы я ни отображал список компаний, я буду заполнять список объектов компании и отображать их. Если мне нужно отобразить атрибуты компании, у меня уже есть загруженные данные.
Было упомянуто, что 'select *' хмурится, и мой объектный подход может быть неэффективным, но у меня возникают проблемы при определении другого способа работы с таблицей базы данных и объектами, которые будут работать, если вы только читаете определенные поля - объект просто не будет заселен.
Да, я мог бы изменить список, чтобы напрямую запрашивать только необходимые поля из базы данных и отображать их, но это означает, что мой код пользовательского интерфейса должен быть более тесно связан с кодом доступа к данным - лично мне нравится степень разделения наличия объект, разделяющий слои.
Всегда готов учиться - я работаю сам, поэтому не всегда в курсе последних технологий или методологий, поэтому любые комментарии приветствуются.