Supponendo problema dominio Stack Overflow e la seguente definizione di eventi:Sourcing eventi e Leggi generazione Modello
UserRegistered(UserId, Name, Email)
UserNameChanged(UserId, Name)
QuestionAsked(UserId, QuestionId, Title, Question)
Supponendo che il seguente stato di vendite evento (in ordine di apparizione):
1) UserRegistered(1, "John", "[email protected]")
2) UserNameChanged(1, "SuperJohn")
3) UserNameChanged(1, "John007")
4) QuestionAsked(1, 1, "Help!", "Please!")
Supponendo il seguente modello di lettura denormalizzato per l'elenco di domande (per la prima pagina di SO):
QuestionItem(UserId, QuestionId, QuestionTitle, Question, UserName)
E il seguente gestore di eventi (che si basa il modello di lettura denormalizzato):
public class QuestionEventsHandler
{
public void Handle(QuestionAsked question)
{
var item = new QuestionItem(
question.UserId,
question.QuestionId,
question.Title,
question.Question,
??? /* how should i get name of the user? */);
...
}
}
La mia domanda è come posso trovare il nome dell'utente che ha chiesto una domanda? O più comune: come devo gestire gli eventi se il mio modello di lettura denormalizzato richiede dati aggiuntivi che non sono presenti nel particolare evento?
Ho esaminato campioni esistenti di CQRS tra cui SimpleSQRS di Greg Young e Fohjin campione di Mark Nijhof. Ma mi sembra che operino solo con dati inclusi negli eventi.
Altro discussione: http://groups.google.com/group/dddcqrs/browse_thread/thread/5ead47db3261dcb5/b069165e48467f41?lnk=gst&q=include+information+in+event#b069165e48467f41 –