Ho un'entità Customer
. Il cliente ha una raccolta di Accounts
. Ho lezioni corrispondenti. La classe Customer ha-a List<Accounts>
.
Ho due punti di vista. La prima pagina mostra il nome, l'indirizzo del cliente, ecc. Ogni campo è associato ai dati alla proprietà corrispondente sull'oggetto Cliente. C'è un link show-account. Facendo clic su quel collegamento, ottieni una seconda vista. Esiste una griglia che è associata ai dati alla proprietà Accounts
sull'oggetto cliente.
Ora devo fornire un'etichetta No-of-accounts
sulla prima vista. Il problema è che non esiste una proprietà di questo tipo sull'oggetto business Customer
. Ho qualche approccio per farlo, ma non mi piace nessuno dei due.
-
Aggiungi una proprietà
AccountCount
suCustomer
oggetto. Ma è artificiale. Cosa succede se domani ho bisogno di mostrare ilBalance
nell'account più alto? -
Utilizza la proprietà
Count
nell'elencoAccounts
. Ma questo ha bisogno che la lista venga popolata. I miei utenti raramente visualizzano l'intero elenco di account. Non vedo il punto di caricare l'intera tabella degli account solo per mostrare il conteggio. -
Una volta completata l'associazione dati, effettua una chiamata separata dall'interfaccia utente direttamente a livello dati. Lascia che una query recuperi solo i dettagli. Ciò sconfigge l'intera architettura a strati / stanco. Presto tutto cade nel caos, con tutti che mantengono questo codice attivando le proprie query.
-
Piuttosto che associazione dati al modello di business
Customer
, posso eseguire il bind dei dati su una classeCustomerViewModel
. Questa classe può avere la proprietàCountOfAccounts
artificiale. Ciò mantiene il codice specifico dell'interfaccia utente separato dalla BL. Il problema è che la classe ViewModel dipende dal livello BO, ma BO non ha quella proprietà. Possiamo compilare la listaAccounts
e recuperare il conteggio da lì, ma il recupero di una tabella per ottenere solo ilCount
sembra eccessivo.
Domanda
Che cosa posso fare quando la mia interfaccia utente desidera qualcosa di diverso dal modello aziendale?