Utilizzo la struttura Prism con EF nell'applicazione WPF.MVVM + Confusione dell'architettura Entity Framework
ViewModel:
- mantiene i riferimenti di servizio (passati dal contenitore unità).
Servizi:
- stanno fornendo le operazioni di "alto livello" con i dati
- mantiene riferimento del Repository, che fornisce operazioni CRUD di base con il database (tavolo singolo per ogni repository).
Repository:
- ogni metodo nel repository utilizza il modello di "usare", dove lavoro con brevi contesto dell'oggetto durata.
Questo è il punto in cui mi sono bloccato: dopo che il contesto dell'oggetto è stato eliminato, non posso più lavorare con le proprietà mappate. Il mio modello di database è complesso (molte tabelle correlate) e molte chiamate .Include() quando si recuperano dati mantengono il codice sporco.
Dopo aver letto diversi thread, ho scoperto che il pattern "unità di lavoro" è probabilmente quello di cui ho bisogno.
Qui viene la mia domanda:
che mantiene di riferimento di unità di lavoro (e quindi contesto)? Se scelgo l'approccio context per view, viewModel dovrebbe avere un riferimento al contesto. Come posso iniettare unità di lavoro ai miei servizi allora? O dovrei creare una nuova istanza di servizio in ViewModel e passare il contesto nel parametro costruttore?
Infine, risolvo questo con il seguente approccio: quando View è aperto, ViewModel crea l'oggetto UnitOfWork, che consiste di contesto e numerosi servizi. I servizi nella stessa unità di lavoro hanno iniettato lo stesso contesto. L'unità di lavoro viene eliminata quando la vista è chiusa. Il progetto in questa discussione [collegamento] (http://teusje.wordpress.com/2011/10/16/unicornmanager-prism-4-mef-wpf-ef-4-1-code-first-nuget-datavalidation/) è anche stimolante. Grazie, Daniel. – yurislav