コード例 #1
0
ファイル: Program.cs プロジェクト: kstatz12/simple-cqrs
        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
ファイル: Program.cs プロジェクト: kstatz12/simple-cqrs
        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
ファイル: Program.cs プロジェクト: kstatz12/simple-cqrs
 public void Apply(PersonRenamed @event)
 {
     DomainModel.Person.FirstName = @event.FirstName;
     DomainModel.Person.LastName  = @event.LastName;
 }