Использование атрибутов для нормализации и валидации бизнес-сущностей
ОГЛАВЛЕНИЕ
В объекты DataSet встроена поддержка параллельного доступа с нежесткой блокировкой. Они позволяют определять и использовать сложные отношения между таблицами. Кроме того, объекты DataSet поддерживают сериализацию, а при изменении схемы базы данных, как правило, не требуется вносить соответствующие изменения в API уровня доступа к данным.
Однако не всегда удобно манипулировать DataSet-ами, особенно в случае большой детерминированности структуры данных. Достаточно сложно привязывать(bind) таблицы к спискам (Repeater, DataGrid) в ASP.NET страницах. Кроме того, DataSet при всем своем удобстве передачи между процессами относительно громоздок по размеру и может достаточно долго сериализоваться/десериализоваться, занимая при этом циклы процессора и оперативную память. Основная альтернатива этому способу - создание собственных бизнес-сущностей, более подходящих в случае основного упора на работу с данными экземпляров и скалярными значениями. Бизнес-сущность это класс, инкапсулирующий в себе данные, относящиеся к какой-либо отдельной сущности (например, пользователь, заказ, товар).
Бизнес-сущность может иметь различные методы для работы с содержащимися данными, может использовать методы фабрик данных для управления своим жизненным циклом. Одной из основных операций, производимых с БС, является отображение её данных пользователю (я имею в виду в первую очередь WinForms, но к ASP.NET это относится также) и сохранение внесенных пользователем изменений в БД или других хранилищах. Здесь также возникает дополнительная задача - необходимо позволить пользователю вводить только корректные данные.
В книге "Analyzing Requirements and Defining Microsoft® .NET Solution Architectures" (далее 70-300) написано:
In addition to the performance of the database, you need to ensure the quality of the data stored by the database. This means that the database implements data integrity and stores valid data that conforms to the business rules.
то есть, вы должны обеспечить не только производительность работы с БД, но и качество хранящихся в ней данных.