Active Record - это шаблон проектирования для доступа к данным ...
На данный момент есть два основных шаблона проектирования, с которыми я сталкиваюсь в отношении доступа к данным: ActiveRecord и шаблон репозитория
Активная запись
Ваши объекты содержат методы для сохранения их состояния в БД (или другой механизм сохранения), поэтому:
У вас может быть объект Customer.
Объект Customer будет иметь несколько методов, таких как Customer.Save () ;, Customer.Get (int id); и другие.
Эти методы на самом деле не имеют ничего общего с потребителем в реальном мире. Они действительно касаются инфраструктуры вашего приложения.
Шаблон репозитория
В шаблоне хранилища вашим клиентским объектом будет POCO или тупой объект. У него есть только методы и свойства, которые ему действительно нужны для представления информации о клиенте (такие как имя, адрес электронной почты, заказы в списке и т. Д.)
Когда вы хотите сохранить клиента - вы просто передаете его в свой репозиторий
Repository.Save (MyCustomer).
С шаблоном Active record легко и быстро работать. К сожалению, это загромождает модель вашего домена этими методами, которые на самом деле не имеют ничего общего с Заказчиком. Это немного усложняет поддержание модели вашего домена с течением времени.
Для многих ситуаций очень уместно использовать шаблон активной записи. Например - если я пишу довольно простое приложение, которое, вероятно, не изменится сильно, я бы, вероятно, запустил SubSonic и сгенерировал бы свой DAL Active Record. Я буду кодировать свой бизнес-код в течение 20 минут, и все вещи в БД уже позаботятся.
Если, с другой стороны, я моделирую особенно сложную область с высокой подверженностью изменениям, я бы предпочел поддерживать чистоту моделей своих доменов и реализовывать шаблон хранилища с помощью nHibernate или аналогичного ...
Прошло много времени с тех пор, как я прокрутил свой собственный доступ к данным с помощью ADO.Net, и я не очень рекомендую это сейчас, так как есть так много отличных инструментов доступа к данным.