public CommandHandlerActor() { var aggregateActor = Context.ActorOf(Props.Create(() => new AggregateRootActor()), "AggregateActor"); Receive <CreatePerson>(x => { var personCreatedEvent = new PersonCreated(x.Model, Guid.NewGuid()); aggregateActor.Tell(personCreatedEvent, Self); }); Receive <ChangeAddress>(x => { var personMovedEvent = new PersonMoved(x.ZipCode, x.AggregateId, x.ModelId); aggregateActor.Tell(personMovedEvent, Self); }); Receive <ChangeName>(x => { var personRenamedEvent = new PersonRenamed(x.FirstName, x.LastName, x.AggregateId, x.ModelId); aggregateActor.Tell(personRenamedEvent, Self); }); Receive <RebuildAggregate>(x => { var aggregateRebuildEvent = new AggregateRebuildInitiated(x.AggregateId); aggregateActor.Tell(aggregateRebuildEvent, Self); }); }
public static void Handle(PersonRenamed @event) { var model = Store.FirstOrDefault(x => x.Id == @event.ModelId); if (model == null) { throw new Exception("No Aggregate Found for that Id"); } model.Person.FirstName = @event.FirstName; model.Person.LastName = @event.LastName; }
public void Apply(PersonRenamed @event) { DomainModel.Person.FirstName = @event.FirstName; DomainModel.Person.LastName = @event.LastName; }