Je pense que je suis dans une impasse ici. J'ai une application que j'ai construite à partir de zéro en utilisant FluentNHibernate (ORM)/SQLite (fichier db). J'ai décidé de mettre en œuvre le modèle Unité de travail et conception de référentiel. Je suis à un point où je dois penser à la fin du jeu, qui va commencer comme une application Windows WPF (en utilisant MVVM) et éventuellement mettre en œuvre des services Web/ASP.Net comme interface utilisateur.FluentNHibernate Unité de travail/Modèle de conception Repository Questions
Maintenant, j'ai déjà créé des objets de domaine (entités) pour ORM. Et maintenant je ne sais pas comment l'utiliser en dehors d'ORM. Les questions à ce sujet sont les suivantes:
- Dois-je utiliser des objets entité ORM directement comme modèles dans MVVM? Si oui, est-ce que je mets une logique métier (telle que certaines valeurs doivent être positives et supérieures à une autre propriété) dans ces objets entité? C'est certainement l'approche la plus simple, et je suis en train de pencher en ce moment. Cependant, y aura-t-il des pièges qui feraient échouer ce plan?
- Si la réponse ci-dessus est non, puis-je créer un nouvel ensemble de classes pour implémenter la logique métier et les utiliser comme modèles dans MVVM? Comment traiterais-je la transition entre les objets du modèle et les objets d'entité? Je suppose qu'une implémentation de convertisseur de type fonctionnerait bien ici.
Je ne connaissais pas AutoMapper, merci! Avec cela, il est parfaitement logique (et efficace) de créer des classes ViewModel séparées et d'utiliser AutoMapper pour mapper leurs propriétés aux propriétés de la classe Entity. Un simple aplat va probablement fonctionner (ou une projection mineure). La deuxième partie que je connais est astucieuse, et nécessite quelqu'un avec une solide connaissance de modèle de conception NHibernate/Unité de travail. Si vous voulez essayer, je l'apprécierais! – Echiban
Oui, je ne connais pas assez NHibernate pour vous dire comment le configurer. Pour ce que ça vaut, j'ai vu une tonne de différentes façons de configurer ISessionFactory, ISession et ITransaction. Personnellement, j'aime travailler directement avec ceux-ci et passer une ISession dans mes classes Repository qui en ont besoin à l'aide d'un conteneur Inversion of Control. Pour ce qui est de la mise en place, je quitterais la documentation de FluentNHibernate car elle est assez légère et n'introduit pas de complexité avec l'ajout d'une couche d'unité de travail. –
Je vous recommande le CodeCampServer (http://code.google.com/p/codecampserver/). Il y a une bonne mise en œuvre vergé utilisant NHibernate, AutoMapper et IoC (StructureMap) – Rookian