Diciamo che abbiamo un Book
che ha un List
di Author
s. L'ordine di Author
s è importante.
Abbiamo quindi la pagina di aggiornamento, in cui l'utente può 1) aggiungere un nuovo autore, 2) rimuovere l'autore esistente o 3) modificare l'ordine. Quello che ho come input è la lista dei nuovi autori.
Trovo spesso questo problema - spesso ci sono molti modelli con questo tipo di relazione. A volte l'ordine non è importante (quindi usiamo Set
) ma più-meno è come questo.
Nel mio metodo aziendale, ho bisogno di:
- rileva il nuovo
Authors
, quindi posso inserirli - rileva rimosso
Authors
, quindi posso rimuoverli - supponiamo che tutto il resto sia aggiornato.
Non posso semplicemente riapplicare gli autori (eliminare e quindi inserire) poiché ci sono dati aggiuntivi relativi a un libro e un autore.
Fare questo manualmente ogni volta è soggetto a errori. C'è un modo migliore per tenere traccia delle modifiche nelle raccolte correlate?
Dovrei invece tenere traccia delle modifiche sull'interfaccia utente (poiché questo è il luogo in cui si verificano) e quindi fornire più input di un solo elenco di tutti gli utenti: ad esempio, l'elenco delle modifiche, l'elenco delle rimozioni? In quel caso il mio metodo di business avrebbe bisogno di più parametri, cioè liste per ogni tipo di cambiamento (rimozione, ecc.).
Infine, stavo pensando di memorizzare un insieme di eventi per aggiornamento, quindi posso ripeterli facilmente sul modello.
Devo gestire questo margine nel modello o nel mio metodo di servizio?
Qualche saggezza su questo?