2009-03-30 8 views
0

Le modèle qui sera transmis à la vue doit-il être complètement défini par un seul appel vers un référentiel unique. En d'autres termes, le modèle est-il un agrégat unique, ou mon modèle doit-il être construit à partir d'agrégats séparés, chacun avec son propre référentiel, dans la couche de service? De la façon dont je l'ai maintenant, j'appelle simplement un référentiel unique pour remplir le modèle entier qui est ensuite présenté par View. On dirait que les agrégats, les référentiels et les modèles deviennent tous le même concept.Un modèle pour une vue doit-il être un agrégat avec son propre référentiel?

Répondre

2

Mon qui est pour "Rien de ce qui précède." Je préfère utiliser des modèles de présentation pour les vues, et les modèles de présentation n'ont pas besoin de référentiel. L'utilisation de modèles de présentation permet de concevoir des vues et des contrôleurs avant de concevoir le modèle et la base de données. Ainsi, vous pouvez obtenir l'entrée de l'utilisateur plus tôt.

  • Les modèles de présentation vous permettent de passer un modèle assez "plat" à la vue, vous n'avez donc pas besoin de vous soucier des problèmes ORM tels que le chargement paresseux.
  • Les modèles de présentation simplifient souvent la liaison du modèle. Lorsque vous utilisez un modèle de présentation, vous n'avez pas à vous soucier de renvoyer accidentellement des champs qu'un utilisateur ne devrait pas voir, ou de mettre à jour accidentellement des champs que l'utilisateur ne devrait pas pouvoir mettre à jour car vous n'avez pas obtenu de liste blanche correct. Maintenant, plus précisément en suivant la ligne de votre question: Avez-vous construit une instance du modèle de présentation? Combien de dépôts sont nécessaires? Eh bien, cette question maintenant presque répond elle-même. Vous concevez le modèle de présentation pour suivre les exigences de la vue. Vous concevez les référentiels en suivant les bonnes pratiques de TDD, y compris l'identification des racines agrégées. Maintenant la question de "combien de référentiels ai-je besoin d'instancier ce modèle" est simple. Vous examinez les racines agrégées requises par le modèle et utilisez celles dont vous avez besoin. Généralement, je peux le faire dans une seule requête LINQ.

  • +0

    effectivement j'ai un modèle de présentation pour chaque vue. Cant vous soutenez que le modèle de présentation est un agrégat en soi pourrait vous pas? comme vous le dites, dans ma couche de service, je "paquet" les agrégats dans le modèle de présentation., et les agrégats peuvent avoir des dépôts différents? – zsharp

    +0

    Un modèle de présentation ne peut pas être une route agrégée en termes DDD par définition, car il ne figure pas dans le référentiel. Si quelque chose est dans le référentiel, alors ce n'est pas un modèle de présentation, encore une fois par définition. Les modèles de présentation sont spécifiques à la vue. –

    +0

    Racine agrégée, c'est-à-dire. –

    Questions connexes