2011-01-22 17 views
5

Parece que hay muchas formas de aplicar los patrones del repositorio, por eso necesito su opinión y una buena respuesta clara sobre lo que parece ser la mejor forma de aplicar el patrón de repositorio. Es el repositorio genérico? Pero hay un problema donde algún objeto de dominio no tiene el mismo comportamiento que otros. Es especificar el repositorio? ¿Qué pasa con la repetición del código entre repositorios? ¿Es ambos combinaison? ¿Qué hay de usar un contenedor di para ambos tipos de implementación?¿Cuáles son las mejores prácticas para crear una clase de repositorio con el código EF4 primero?

Gracias

Editar: el ORM estoy usando es de Entity Framework 4. Sería bueno tener un ejemplo con EF4.

Respuesta

1

This post by Gabriel Schenker es una buena explicación del patrón de repositorio. Lo implementa con NHibernate (no dices qué ORM estás usando) y proporciona un repositorio base genérico. Para mí, el patrón de repositorio está muy relacionado con las pruebas y la posibilidad de simularlo o burlarse de él, y esta publicación de blog también muestra cómo crear tu propia imitación.

En mi experiencia la mayoría de los repositorios comparten algunas funcionalidades comunes, p. GetById, Agregar, Eliminar. Por lo tanto, es útil tener una clase base que pueda heredarse. Donde puede ser un poco más complicado es cuando comienzas a pensar en consultas dinámicas de Linq y cómo se pueden probar.

Ejemplos de patrones de repositorio con Linq se pueden encontrar here y here pero comenzaría de manera simple ya que estos podrían ser excesivos para algunos proyectos.

+0

Buena explicación, ¿tiene algún ejemplo de cuándo se usarían las consultas dinámicas de linq? – Rushino

+0

Agregué dos enlaces que muestran cómo usar Linq con NHibernate. –

+0

Lo siento, me acabo de dar cuenta de que no dije el orm que estaba usando, que es el marco de la entidad 4. ¿Tiene algún ejemplo con ef4 – Rushino

3

El patrón de Repositorio en sí es bastante explícito en las áreas que requieren especificación. El resto se deja a propósito, porque depende de mis factores externos, como el lenguaje de programación, el alcance del proyecto y el estilo de programación personal.

En otras palabras: Usted parece estar pidiendo un patrón sobre la forma de aplicar el patrón, pero al final se tendrá que tomar sus propias decisiones en la programación.

voy a tratar de responder a sus preguntas más específicas sin embargo:

  • Sí, el uso de los genéricos es una buena idea para un repositorio. Otro enfoque sería tener una interfaz común para todos los objetos que deberían almacenarse. También puede ir con ambos, dependiendo de sus requisitos.
  • Trate de lidiar con las diferencias en el comportamiento de los objetos llamando a los métodos polimórficos en los objetos que se almacenarán.
  • No debería haber repetición de código si lo hace bien (mediante el uso de genéricos y/o interfaces).
Cuestiones relacionadas