attivo record è un modello di progettazione per l'accesso ai dati ...
Al momento ci sono due principali modelli di progettazione mi sembra di imbattersi in materia di accesso ai dati: ActiveRecord e Pattern Repository
attivo Record
Gli oggetti contengono metodi per la persistente loro stato ad un DB (o altro meccanismo di persistenza) così:
Si può avere un oggetto Cliente.
L'oggetto del cliente avrà un sacco di metodi come Customer.Save() ;, Customer.Get (int id); e altri.
Questi metodi in realtà non hanno nulla a che fare con un cliente nel mondo reale. Sono davvero sull'infrastruttura della tua applicazione.
Repository modello
In Pattern Repository, l'oggetto cliente sarebbe un POCO, o un oggetto muto. Ha solo metodi e proprietà che in realtà ha bisogno di rappresentare un cliente (cose come nome, indirizzo email, gli ordini List, ecc)
Quando si vuole persistere il cliente - è sufficiente passarlo al repository
Repository.Save (MyCustomer).
Il modello di record attivo è veloce e facile da utilizzare. Sfortunatamente, ingombra il tuo modello di dominio con questi metodi che in realtà non hanno nulla a che fare con un cliente. Ciò rende leggermente più difficile mantenere il tuo modello di dominio nel tempo.
Per molte situazioni è molto appropriato utilizzare uno schema di registrazione attivo. Ad esempio: se sto scrivendo un'app abbastanza semplice che probabilmente non cambierà molto, probabilmente accendere SubSonic e generare un DAL di un record attivo. Sarei codificato il mio codice aziendale entro 20 minuti e tutte le cose di DB sono già state prese in considerazione.
Se, d'altra parte, mi sto modellando un dominio particolarmente complessa, con elevata suscettibilità per cambiare, preferisco mantenere il mio modelli di dominio pulita, e attuare un modello di repository con NHibernate o simili ...
È passato molto tempo da quando ho eseguito il rollover del mio accesso ai dati tramite ADO.Net, e in realtà non lo consiglio vivamente ci sono così tanti ottimi strumenti di accesso ai dati disponibili.
+1. Ottima spiegazione –