Duplicar posibles:
What are the benefits of Persistence Ignorance?No entiendo el punto de independencia persistencia
Después de algún tiempo y algunas preguntas tratando de averiguar el marco de la entidad, que he llegado a la conclusión de que simplemente no entiendo cuál es el punto de persistencia de los objetos ignorantes.
Lo mejor que puedo decir, la diferencia práctica entre el uso de objetos de persistencia-conscientes y los persistencia-ignorantes es que uno se acostumbra algo así como
Person p = Person.Load(id);
p.Active = false;
p.Save();
y el otro se utiliza a lo largo de las líneas de
using (var context = new MyContext())
{
Person p = context.Persons.Single(x => x.ID == id);
p.Active = false;
context.SaveChanges();
}
En el primer caso, puedo devolver p
, y llamar al Save()
en algún momento posterior. En este último, podría devolver p
, pero tendría que ponerlo en un nuevo MyContext()
para guardarlo. En el primer caso, suponiendo que Person hereda Load() y Save() de algún objeto base que realmente maneje la lógica de la base de datos, si quisiera cambiar la persistencia, simplemente implicaría cambiar ese objeto base (o incluso solo tener un IPersistent
interfaz que múltiples clases base pueden implementar para acceder a múltiples tiendas). En este último, necesitaría cambiar cada instancia de MyContext
si la capa de persistencia cambiara, y sería tremendamente complicado hacerlo por partes.
Mi impresión es que la persistencia-la ignorancia es algo bueno. Simplemente no puedo entender por qué. Parece que es mucho más complicado configurarlo, trabajar con él, cambiarlo al por mayor y cambiar poco a poco, sin ninguna ventaja para esa complicación. ¿Me estoy perdiendo algo importante, o todo mi entendimiento de lo que es consciente de la persistencia/ignorante es defectuoso?
Además de la persistencia entidades ignorantes, también debe abstraer su ORM. Un método común de hacerlo es el [Repository pattern] (http://martinfowler.com/eaaCatalog/repository.html). – jrummell
@DavidHall, no creo que sea un duplicado. Al menos, después de leer las respuestas sobre la otra pregunta, todavía no veo por qué un objeto consciente de la persistencia * abstraído * es mejor que uno persistente e ignorante. – Bobson