Sto costruendo un'applicazione WPF, usando MVVM e Prism. Vale la pena notare che io sono l'unico sviluppatore che lavora su un grande progetto, quindi le risorse sono limitate. Ecco cosa ho attualmente:
- Modelli - POCO
- ViewModels - contengono istanze di POCO e utilizza il livello di servizio in base all'interazione dell'utente.
- Visualizzazioni - associate a ViewModels
- Servizi - Servizi WCF per persistenza, recupero dati
Uso Dapper per mappare i risultati delle query sui miei modelli.
Sono curioso di sapere come gli altri, che non usano un ORM, gestiscono il recupero dei dati dato che una miriade di variazioni se restituisce l'oggetto POCO completamente caricato causerebbe un'esecuzione di query piuttosto significativa.
per es.
public class Customer : BindableBase
{
public string Name{ get; set; }
public ObservableCollection<Address> Addresses { get; set; }
public ObservableCollection<Contact> Contacts { get; set; }
}
public class Contact : BindableBase
{
public ObservableCollection<PhoneNumber> PhoneNumbers { get; set; }
}
Quando guardi i risultati di ricerca per i clienti, potremmo visualizzare solo il nome. Quindi una query come SELECT Name FROM dbo.Customer
sarebbe sufficiente.
Quando si modifica un record del cliente, abbiamo bisogno della maggior parte dei dati recuperati relativi al record del cliente, quindi ci sarebbero dei join nella query per afferrare indirizzi, contatti e numeri di telefono.
... e ci sono altre opzioni, forse hanno solo bisogno di indirizzi o solo contatti.
Il livello di servizio verrà utilizzato in altre applicazioni e tecnologie e, in quanto tale, avrò la logica della mia attività come posizione centralizzata. Sarò bloccato a creare una funzione nel livello di servizio per gestire ogni scenario? PER ESEMPIO. GetSearchData(string searchCriteria)
... GetCustomerWithAddresses(int customerId)
... se sì, come andresti a strutturare il progetto? Ho letto da qualche parte che un'altra persona ha il livello di servizio che restituisce il modello di visualizzazione, di cui non sono necessariamente un fan. Avrei ancora bisogno delle funzioni generiche che restituiscono i dati di base per altre tecnologie che consumano i servizi.