Używam ramy Prism z EF w aplikacji WPF.Architektura MVVM + Entity Framework zamieszanie
ViewModel:
- przechowuje referencje serwisowa (minęły pojemnika jedności).
Usługi:
- są świadczące operacji „wysoki poziom” z danymi
- utrzymuje odniesienie repozytorium, który zapewnia podstawowe operacje CRUD z tabeli bazy danych (za pomocą pojedynczego repozytorium).
Repozytorium:
- każda metoda w repozytorium wykorzystuje „używając” wzór, gdzie mogę pracować krótko kontekście obiektu.
To tutaj utknąłem: po usunięciu kontekstu obiektu nie mogę już pracować z mapowanymi właściwościami. Mój model bazy danych jest złożony (wiele powiązanych tabel) i wiele wywołań .Include() podczas pobierania danych sprawia, że kod jest brudny.
Po przeczytaniu kilku wątków odkryłem, że wzór "jednostki pracy" jest prawdopodobnie tym, czego potrzebuję.
Nadchodzi moje pytanie:
Kto utrzymuje odniesienie jednostki pracy (a tym kontekście)? Jeśli wybiorę metodę kontekstu na widok, viewModel powinien mieć odniesienie do kontekstu. W jaki sposób mogę teraz wprowadzić jednostkę pracy do moich usług? Czy powinienem utworzyć nową instancję usługi w ViewModel i przekazać kontekst w parametrze konstruktora?
Wreszcie, rozwiązuję to z następującym podejściem: kiedy View jest otwarty, ViewModel tworzy obiekt UnitOfWork, który składa się z kontekstu i kilku usług. Usługi w tej samej jednostce pracy wstrzyknęły ten sam kontekst. Jednostka pracy jest usuwana, gdy widok jest zamknięty. Projekt w tym wątku [link] (http://teusje.wordpress.com/2011/10/16/unicornmanager-prism-4-mef-wpf-ef-4-1-code-first-nuget-datavalidation/) to także inspirujące. Dziękuję, Daniel. – yurislav