Je lis le formulaire officiel de votre première application basée sur NHibernate .
Bien que le didacticiel soit bon et facile à suivre, je me demande pourquoi le modèle de référentiel est utilisé.
Dans les divers Add
, Update
, les Remove
méthodes dans la ProductRepository
mise en œuvre, le code est presque identique - elles sont toutes les transactions en utilisant, et la différence est dans la « viande » -à- dire l' appel session.Save
int la Add
méthode, session.Delete
dans la remove
méthode. ( La page manque d'ancrages HTML, mais vous pouvez rechercher dans la page le code pertinent comme public void Remove
,public void Add
)
Ce code "se sent mal".
Pourquoi l'auteur utilise-t-il le modèle de référentiel - est-ce juste pour la démonstration de l'utilisation de NHibernate ou est-ce nécessaire ou pour une autre raison?
Ps. Mon expérience vient de Ruby on Rails utilisant ActiveRecord, donc j'essaie de comprendre comment NHibernate fonctionne / est utilisé.
la source
Réponses:
Le modèle de référentiel n'est pas requis. Comme pour tous les autres modèles, c'est une décision "architecturale" que vous devez prendre en fonction des besoins de votre entreprise. En général, le modèle de référentiel est utilisé pour implémenter "l'Ingority Persistance Ingorance", ce qui signifie que vos entités ne savent rien sur la façon de persister sur votre périphérique de stockage (base de données, XML, TextFile, etc.). Si par exemple vous avez une adresse d'entité, elle ne contiendra pas la logique de persistance (vous ne trouverez nulle part quelque chose comme address.Save ou address.Update) mais vous passerez votre entité à une méthode de référentiel qui est chargée de conserver la changements
la source
L'avantage de l'utilisation du modèle de référentiel est de simuler votre couche d'accès aux données, afin que vous puissiez tester le code de votre couche métier sans appeler de code DAL. Il y a d'autres gros avantages mais cela me semble très vital.
la source