J'utilise le framework Prism avec EF dans une application WPF.
ViewModel :
- conserve les références du service (transmises par le conteneur d'unité).
Services :
- fournissent des opérations de "haut niveau" avec des données
- garde la référence du référentiel, qui fournit des opérations CRUD de base avec la base de données (une seule table par référentiel).
Dépôt :
- Chaque méthode du référentiel utilise le modèle "using", où je travaille avec un contexte d'objet de courte durée.
C'est là que je me suis bloqué : après que le contexte de l'objet ait été éliminé, je ne peux plus travailler avec les propriétés mappées. Mon modèle de base de données est complexe (plusieurs tables liées) et les nombreux appels .Include() lors de la récupération des données salissent le code.
Après avoir lu plusieurs fils de discussion, j'ai découvert que le modèle "unité de travail" est probablement ce dont j'ai besoin.
Voici ma question :
Qui garde la référence de l'unité de travail (et donc du contexte) ? Si je choisis l'approche contextuelle par vue, le viewModel doit avoir une référence contextuelle. Comment puis-je alors injecter l'unité de travail dans mes services ? Ou dois-je créer une nouvelle instance de service dans le ViewModel et passer le contexte dans le paramètre du constructeur ?