Помимо снобизма, DataSets может быть полезен в приложениях с относительно простой бизнес-логикой, где разработчик имеет некоторый контроль над схемой базы данных, так что таблицы данных соответствуют бизнес-объектам 1: 1 (которые в этом случае обычно состоят из DataRow ).
Мартин Фаулер очень четко обсуждает это в «Шаблонах архитектуры корпоративных приложений» ( Amazon link ). Наборы данных ( Табличный модуль в номенклатуре Фаулера) хорошо соответствуют сценарию транзакции , тогда как Модель предметной области требует более четко определенных классов и сопоставления с базой данных (поскольку корреляция 1: 1 между бизнес-объектами и таблицами в этой ситуации обычно недостижима).
DataSets / Table Module имеет множество ограничений, но они имеют преимущества в простоте, особенно если вы работаете в .NET.
Прагматичный программист оценит требования конкретного приложения и применяет шаблоны и технологии, которые подходят лучше всего, даже если они не самые сексуальные. Для простых сценариев с простым отображением 1: 1 на реляционные данные наборы данных не нужны. Однако часто они так и делают, и любой программист, который полагается исключительно на них, сталкивается с проблемами в более сложных сценариях.