6

Recientemente me enteré de los patrones de diseño del repositorio y la unidad de trabajo y pensé que los implementaría en un nuevo proyecto EF4 MVC3, ya que la abstracción es generalmente buena.EF4 con MVC3 - ¿Necesito el patrón de repositorio?

Como los agrego al proyecto, me pregunto si el jugo vale la contracción proverbiales, teniendo en cuenta lo siguiente:

  • Es muy poco probable que el mecanismo de acceso de datos subyacente cambiará de EF4.
  • Este nivel de abstracción requerirá más sobrecarga/confusión para el proyecto y para otros desarrolladores del equipo.

El único beneficio real que veo al usar el patrón Repositorio es para probar la unidad de la aplicación. Resumir el almacén de datos no parece útil, ya que sé que el almacén de datos no cambiará y, además, que EF4 ya proporciona una abstracción bastante buena (simplemente llamo a .AddObject() y parece que estoy modificando un archivo en memoria colección y simplemente llamo .SaveChanges() que ya proporciona el patrón de unidad de trabajo).

¿Debería incluso molestarme en implementar esta abstracción? Siento que debe haber algún beneficio masivo que me falta, pero simplemente no siento que deba seguir esta ruta. Estoy dispuesto a convencerme de lo contrario; alguien puede hacer un caso? Gracias.

Respuesta

6

Te lo recomiendo reading this answer and all linked questions. El repositorio es un patrón muy popular y realmente hace que su aplicación sea agradable y limpia. Te hace sentir que tu arquitectura es correcta, pero algunas suposiciones sobre el patrón del repositorio con EF no son correctas. En mi opinión (descrito en esas respuestas):

  • Hará poco más compleja tarea relacionada EF mucho más difícil de lograr o su repositorio e implementación UoW necesitarán tener interfaz pública muy similar al de EF
  • Será No haga que su código sea mejor que la unidad sea comprobable porque todas las interacciones con el repositorio aún deben estar cubiertas por las pruebas de integración. No solo mi experiencia demostró que burlarse del código EF al reemplazar linq-to-entities con linq-to-objects no prueba su código.
+0

Si utiliza los objetos POCO en EF, debería ser más fácil probar los objetos y puede tratarlos como cualquier otro objeto no ef. Esto simplifica enormemente esta dependencia. –

+0

@ Adam: No se trata de POCO, sino de que el proveedor de linq-a-entidades haya cambiado a linq-to-objects, donde L2E es solo un subconjunto de L2O. –

+0

¿me puede dar un breve ejemplo del problema que no estoy siguiendo y me gustaría entender? –

2

sí sí sí:) - en primer lugar, el patrón de repositorio ayuda a inyectar sus dependencias para la prueba unitaria. En segundo lugar, da una vista muy clara de exactamente qué métodos de acceso a datos están disponibles para obtener algo en lugar de personas misc. codificación contra la capa EF directamente. Descargue también las plantillas POCO para EF4 para que sus clases no lleven las propiedades EF con ellas si las usa como modelos y/o no quiere referencias de bibliotecas de dependencias EF en su aplicación mvc suponiendo que su repositorio está en un proyecto separado (que recomiendo). Si está utilizando todos los modelos de vista, entonces no es una gran preocupación, pero es bueno trabajar con un objeto "Cliente" sin métodos adicionales. Es más limpio en mi opinión.

Cuestiones relacionadas