J'ai un objet: BibliothèqueModèle de domaine avec modèle de référentiel
Une bibliothèque peut contenir plusieurs livres, CD et documents. Chaque classe a la propriété Id, Name et Price à l'exception de la classe Library qui a la propriété Address.
Je souhaite créer un modèle de référentiel pour extraire les données stockées dans les couches ci-dessus. À l'heure actuelle, les données sont stockées dans des fichiers XML.
<library>
<books></books>
<cds></cds>
<papers></papers
</library>
Plus tard, nous envisageons de le stocker dans des bases de données. Nous aurons alors une table de bibliothèque, une table de livres, une table de cd et une table de papiers. L'utilisateur crée un objet de bibliothèque sur l'écran et crée ensuite des livres, des CD et des documents sur l'écran.
Il clique ensuite sur Enregistrer. À ce stade, je veux prendre l'objet de bibliothèque nouvellement créé et l'enregistrer en XML, donc je veux avoir Repository et en utilisant l'injection de dépendance, j'injecterai une implémentation du dépôt xml dans les couches ci-dessus afin que les données soient stockées correctement. Je peux sérialiser l'objet Library et obtenir xml et appeler la méthode Save simple pour enregistrer l'objet de bibliothèque.
mais imaginez que je remplace XMLRepository par DatabaseRepository.
Dans ce cas, je souhaite que le reste des couches ci-dessus reste inchangé. J'espère que LibraryRepository.Save() fera attention s'il doit aller en XML ou CSV ou DB. Je suis confus comment je vais créer un modèle de référentiel pour résoudre la méthode LibraryRepository.Save().
Tout le monde dit partout que la classe Repository devrait avoir une seule responsabilité. Il devrait seulement enregistrer un type d'objet et ne devrait pas prendre un objet, prendre ses classes liées et les enregistrer aussi. Chaque classe devrait avoir sa propre classe Repository.
De plus, chaque objet de bibliothèque possède plusieurs objets Books. Je ne veux pas utiliser une boucle for et passer par chaque livre dans la méthode LibraryRepository.Save.
Je ne sais pas comment créer mon modèle de domaine et appeler la méthode Library Save().
S'il vous plaît guider.
Jetez un oeil à cet article sur la conception axée sur le domaine de MSDN http://msdn.microsoft.com/en -us/magazine/dd419654.aspx. L'article traite beaucoup de ces problèmes et contient des liens vers d'autres informations pertinentes. Vous ne devez pas créer de référentiel pour chaque objet, mais plutôt créer un référentiel pour chaque "agrégat". Le groupe d'objets qui composent une entité logique. –
Je pense qu'il est préférable d'utiliser un ORM. Vous pouvez modifier le fournisseur de données sous-jacent lorsque vous le souhaitez.Par exemple, NHiberante peut stocker des données dans un fichier CSV (cochez cette question http://stackoverflow.com/questions/680994/can-nhibernate-persist-to-flat-files-instead-of-database). –