Questa è una domanda per le volte in cui stai creando il modello di lettura per gestori di eventi.
La domanda si riduce a: come può un gestore di eventi attingere da altre fonti di informazioni rispetto a ciò che è contenuto nell'evento gestito stesso per costruire un modello di lettura?
Ho due aggregati, Persona e Indirizzo . Una persona può essere associata a diversi indirizzi (casa, lavoro, ecc.)
Quindi ho una tabella dei modelli di lettura Indirizzi (ID, riga1, riga2, riga3, ecc.)
Ho anche una tabella dei modelli di lettura PersonAddresses (PersonID, AddressID, line1, line2, line3) - Dati duplicati e denormalizzati.
-
Quando viene creato un indirizzo , invio un evento AddressRegistered con le informazioni sull'indirizzo (ID, Line1, Line2, ecc.).
-
Quando un indirizzo è associato a Person , invio un evento AddressAssociated (con PersonId, AddressId).
Quindi, voglio creare il readModel.
-
Quando ricevo un evento AddressRegistered , aggiungo una voce nella Addresses tabella dei modelli letti
-
Quando ricevo un evento AddressAssociated , voglio aggiungere una voce nella tabella dei modelli letti PersonAddresses .
Tuttavia, mi piacerebbe avere anche le informazioni sull'indirizzo (Linea1, Linea2, Linea3) nella tabella PersoneAddresse poiché la mia applicazione clien la utilizzerà in questo modo. Ma queste informazioni non sono contenute nell'evento AddressAssociated . Questo evento contiene solo PersonID e AddressId .
Qual è il modo più consigliato per ottenere tali informazioni (Linea1, Linea2, Linea3) per l'associato Indirizzo nel gestore di eventi AddressAssociated per popolare PersonAdresses leggi la tabella dei modelli?
- Nel dominio, collega le informazioni sull'indirizzo (Linea1, Linea2, ...) all'evento IndirizzoAssociato in modo che possa essere aggiunto direttamente nella tabella PersoneAddresse ? Ciò richiederebbe un servizio di dominio in quanto avrebbe bisogno di cercare più aggregati. (Indirizzo e Persona sono due aggregati)
- Quando aggiungi voci nel PersonAddresses , recupera le informazioni in precedenza dalla Addresses tabella dei modelli letti? È raccomandato che il modello letto sia letto da solo (consistenza finale, ecc.)?
- Qualcos'altro?