El patrón de repositorio se utiliza para abstraer de una base de datos particular y la tecnología de mapeo de relaciones de objetos (como EF) utilizada. Así que puedo reemplazar fácilmente (por ejemplo) mis asignaciones de marcos de entidades con Linq a SQL en el futuro si así lo decido.Patrón de repositorio con Entity framework
Pero cuando uso EF tengo mis clases de entidades del modelo, es decir, se generan a partir de ese diagrama visual. Si uso estas clases de entidad generadas en mi repositorio y luego decido reemplazar EF por otra cosa, entonces eliminaré ese diagrama de entidad visual y eso significa también eliminar clases ¿verdad?
El punto al que me refiero es que mi repositorio dependerá del marco de la entidad, es decir, de la capa de acceso a los datos porque usará las clases generadas por EF.
¿Cómo elimino esta dependencia?
También tenga en cuenta que utilizo EF principalmente por su capacidad de generar todo a partir de ese diagrama visual - Solo diseño el diagrama y dejo que genere una base de datos con todas las claves externas etc. Me gusta mucho y no lo hago quiero siquiera pensar en los comandos SQL.
@Ladislav Mrnka Primero tengo que estar en desacuerdo con "No diseñe su aplicación porque algo puede suceder". Siempre trato de hacer que mi código sea robusto y defensivo, y por lo general prueba como una buena decisión más adelante. Pocas líneas adicionales significan horas ahorradas en refactorización y depuración. Si "No diseñar su aplicación debido a que algo puede suceder" era cierto, no muchos proyectos usarían repositorios en absoluto (excepto aquellos que necesitan soportar 2 tecnologías de almacenamiento persistentes desde el principio). En segundo lugar, me siento mal por pasar la referencia al contexto a la capa de Servicio, así que necesito algo de DAL para envolverlo. – drasto
@Ladislav Mrnka +1 para plantillas T4 y esos enlaces. Algunos más recursos sobre eso? – drasto
@drasto: si tiene la habilidad suficiente para tomar una decisión profesional sobre su arquitectura, entonces el enfoque está bien. Pero después de responder y leer muchas preguntas sobre EF y repositorios, simplemente creo que muchos desarrolladores están diseñando sus aplicaciones. Tener dos tecnologías de acceso a datos desde el principio es una buena razón para introducir repositorios, pero no lo mencionó en la pregunta. –