示例#1
0
        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);
            });
        }
示例#2
0
        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;
        }
示例#3
0
 public void Apply(PersonRenamed @event)
 {
     DomainModel.Person.FirstName = @event.FirstName;
     DomainModel.Person.LastName  = @event.LastName;
 }