J'ai deux référentiels Catalog et User, j'ai une situation où j'ai besoin d'appeler une méthode dans le repo du catalogue de l'user repo, est-ce une bonne pratique ou y at-il un meilleur moyen?Appel d'un référentiel à partir d'un référentiel
Répondre
Vous ne devriez pas manipulez ce genre de contrôles d'autorisation au sein de votre Référentiels. Une règle métier telle que "Cet utilisateur a besoin de X commentaires pour publier" n'est pas vraiment une requête de référentiel, c'est une propriété de votre utilisateur.
De plus, les appels d'autorisation sont effectués très fréquemment dans une application, et vous ne voulez vraiment pas toucher votre base de données chaque fois qu'une vérification est nécessaire.
Vous devriez charger correctement ces autorisations dans votre objet utilisateur qui est ensuite mis en mémoire cache pour la demande actuelle, et utilisez votre domaine:
public class Service {
public void Save(Post post)
{
if(User.GetCurrentUser().HasEnoughCommentsToPost())
postRepository.Add(post);
}
}
Je renverrait l'autre dépôt à la couche supérieure, comme une couche de service
Je pense que dans votre autorisation de cas fait partie de votre logique de domaine. Je créerais donc une classe ou une interface abstraite appelée AuthorizationPolicy (peut-être que vous pouvez trouver un meilleur nom plus proche de votre domaine), dans ma couche de domaine. Avant d'appeler une méthode sur le référentiel, le client doit vérifier si l'autorisation est basée sur la politique. Une autre solution, car l'interface d'un référentiel fait également partie de la logique métier, vous pouvez créer une classe de base pour votre référentiel qui vérifie les autorisations de l'utilisateur et délègue le reste aux classes dérivées.
L'implémentation de AuthorizationPolicy communiquera avec la classe Catalog si vous le souhaitez. De cette façon, les deux référentiels sont bien découplés.
- 1. Algorithme 2D Référentiel traduction
- 2. Exportation d'un seul projet à partir d'un référentiel SVN
- 3. Comment récupérer les branches disponibles à partir d'un référentiel Bitbucket?
- 4. Utiliser le référentiel Git local avec un référentiel maître Subversion
- 5. Référentiel subsonique BuildUpdateQuery Bug?
- 6. Copier le référentiel SVN
- 7. Création d'un référentiel Visio
- 8. Référentiel d'étiquettes central?
- 9. Le référentiel peut avoir DTO?
- 10. Tortoise Delete File Référentiel système
- 11. Emplacement du référentiel Maven malheurs
- 12. Créer un référentiel rétrocompatible SVN
- 13. Référentiel, objets d'entité et objets de domaine
- 14. Problème de connexion au référentiel SVN
- 15. Existe-t-il un moyen d'utiliser un référentiel comme "modèle" pour démarrer un nouveau référentiel?
- 16. Partage de mon référentiel (modèle de référentiel) avec d'autres projets (.NET)?
- 17. Mise à jour du référentiel Subversion avec historique
- 18. Un référentiel svn peut-il inclure/link-to un référentiel git externe?
- 19. Le modèle de référentiel - recherche d'un référentiel basé sur un type
- 20. comment les fichiers liés au référentiel vss peuvent migrer dans le référentiel svn
- 21. Comment trouver la version du référentiel Subversion?
- 22. Comment restreindre l'accès au référentiel via WebSVN?
- 23. Mettre en place un référentiel SVN spécifique
- 24. Maven logithèque d'instantanés vs référentiel de sortie
- 25. Comment indexer et rechercher le référentiel subversion
- 26. NHibernate Passage de session au référentiel
- 27. Adhésion .NET avec le modèle de référentiel
- 28. Agrégats et référentiel. Comment déterminer les agrégats?
- 29. Hibernate Core daily/weekly build Référentiel Maven
- 30. Modèle de référentiel avec .NET 1.1
Le problème. J'ai un Commentaire des méthodes liées dans mon repo de catalogue. Dans mon user repo, je veux ajouter la méthode canuserpost (qui interrogera db pour voir si suffisamment de commentaires ont été faits pour leur permettre de poster). Le code requis sera utilisé dans les deux repo où aller, dans un et référencer l'autre, les deux, selon la référence dfa à la couche de service ou autre chose? – monkeylee