Ceci est un peu de questions conceptuelles mais je pense que c'est le bon endroit pour le demander. Je travaille avec NHibernate depuis un certain temps, mais j'ai du mal à utiliser les collections dans les objets POCO. 1. Je pense que le concept de proxy est sympa mais quand vous voulez l'utiliser dans une architecture multi-niveaux, cela devient un défi. . 2. Je souhaite ajouter une logique métier à tout type de requête de la base de données. par exemple, restrictions d'autorisation, etc. 3. Je voudrais ajouter une logique métier lorsque j'ajoute ou supprime une entité d'une collection.Nhibrnate POCO objets avec des relations, mais pas de collections - Mutli tier
et il y a d'autres raisons pour lesquelles j'ai des problèmes avec les collections et les proxies.
Je pensais qu'il y avait peut-être un moyen d'utiliser l'objet POCO sans aucune collection et laisser la couche de service pour gérer les sous requêtes et l'association etc ... Je comprends que la collection est nécessaire pour que le Nhibernate fonctionne Je suis hors de la couche de service je veux flatter les objets et sortir toutes les collections. De cette façon, je peux mettre en œuvre mes propres opérations et la logique métier.
Y at-il un moyen standard de le faire? dois-je attacher et détacher les objets? comment puis-je créer un objet DTO à partir de l'objet POCO et copier les champs etc ...
Quelqu'un at-il des bonnes pratiques pour cela et a fait la même chose?
Je pouvais simplement créer les objets POCO sans aucune relation et ne laisser savoir à nhibernat que ces relations via le mapping. puis en utilisant la session, je peux contrôler les associations entre les objets.
Merci, Noam
Je ne suis pas sûr que je comprends parfaitement votre question.NH n'a en aucun cas besoin de quoi que ce soit pour fonctionner (excepté une valeur d'ID), donc vous pouvez simplement ignorer n'importe quoi dans le mapping que vous ne voulez pas/besoin. Mais je suppose que ce n'était pas ta question (du moins pas entièrement)?! –
Vous n'avez pas besoin de toujours spécifier la collection dans le mappage. Tant que l'autre extrémité a le plusieurs-à-un, vous pouvez gérer ces collections séparément. Je définis généralement la collection uniquement pour la commodité de cascade = "delete". – dotjoe