internal void Create(RegisterPerson cmd) { if (State.Version > 0) { if (State.Name == cmd.Name) { return; } else { throw DomainError.Named("PersonAlreadyRegistered", $"A person named {State.Name} is already registered with id {State.Id}"); } } var e = new PersonRegistered() { Id = cmd.Id, Name = cmd.Name }; Apply(e); PublishedEvents.Add(e); }
async Task When(RegisterPerson c) { await IdempotentlyCreateAgg(c.Id, agg => agg.Create(c)); }