Q rapide pour vous experts en matière de modèles.Unité de travail et L2S DataContext
Je veux un modèle Repository qui est découplé de la technologie d'accès aux données réelle, comme je ne l'ai pas encore décidé et je veux qu'il soit flexible. Donc, cela pourrait être L2S, L2E, NHibernate, Lightspeed ou quoi que ce soit.
Mais je suis confus au sujet de cette chose UnitOfWork.
Dans le monde L2S, cela semble être votre DataContext. Mais qu'en est-il d'un monde non-L2S, imaginez que j'utilisais du SQL écrit à la main par exemple.
Ma question est qui fait quoi? Dans ma méthode Repo.Save(), devrait-il appeler le UnitOfWork.Commit qui génère alors le SQL INSERT/UPDATE requis?
Ne vous attendez pas à une réponse définitive, mais une discussion serait bonne, juste pour m'assurer que je suis sur la bonne voie!
Merci
1) La technologie de persistance a fui dans le domaine en utilisant le DataContext (L2S). 2) Le DataContext peut être utilisé en dehors du contexte du référentiel, les clients peuvent simplement utiliser DataContext pour générer leurs propres requêtes, il n'y a donc pas besoin d'un référentiel. –
Un conteneur IoC peut résoudre ces deux problèmes. IUnitOfWork a juste besoin d'une méthode SubmitChanges, ce qui signifie que les clients qui l'utilisent n'auront pas accès au contexte de données. Vous pouvez implémenter IUnitOfWork dans une classe partielle DataContext. Ensuite, pour les référentiels, ils devraient plutôt être résolus à partir du conteneur IoC via des interfaces. Les implémentations concrètes de ces dépôts peuvent avoir la classe concrète DataContext injectée via leurs constructeurs. – mvr