Pregunta

Si el modelo que se pasará a la vista definirse completamente por una sola llamada a un único repositorio. En otras palabras, es el modelo de un solo agregado, o debe mi modelo se construye a partir de agregados separados, cada uno con su propio repositorio, en la capa de servicio?

La forma que tengo ahora, es simplemente llamar a un único repositorio para llenar todo el modelo que luego es presentado por Vista. Parece que los agregados, los depósitos y los modelos se están volviendo el mismo concepto.

¿Fue útil?

Solución

Mi que es para "Ninguna de las anteriores". Yo prefiero usar modelos de presentación para las vistas, y modelos de presentación no necesito un repositorio. Hay una variedad de razones para esto:

  • Uso de modelos de presentación le permite diseñar vistas y controladores antes de diseñar el modelo y la base de datos. Para que pueda obtener la entrada del usuario antes de tiempo.
  • modelos de presentación le permiten pasar de un modelo bastante "plana" a la vista, por lo que no tiene que preocuparse acerca de las preocupaciones ORM como carga diferida.
  • modelos
  • Presentación menudo simplifican modelo de unión.
  • Cuando se utiliza un modelo de presentación, usted no tiene que preocuparse de volver campos de un determinado usuario de accidentalmente no se debe permitir ver, o accidentalmente la actualización de los campos que el usuario no se debe permitir que actualizar, porque no le dieron una lista blanca correcta.

Ahora, más específicamente, siguiendo la línea de su pregunta: ¿Ha construir una instancia del modelo de presentación? ¿Cuántas repositorios son necesarias? Bueno, esta pregunta se responde sola ahora casi. A diseñar el modelo de presentación para cumplir con los requisitos de la vista. A diseñar los repositorios siguientes buenas prácticas TDD, incluyendo la identificación de las raíces agregadas. Ahora la pregunta de "¿cuántos repositorios necesito para crear una instancia de este modelo" es sencillo. Examina las raíces agregados requeridos por el modelo, y el uso de los que necesita. En general, no puedo hacer esto en una sola consulta LINQ.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top