public void Store(AggregateBase aggregate) { // Take non-persisted events and write them to the event store var events = aggregate.GetUncommittedEvents().ToArray(); store.AppendStream(aggregate.Id, aggregate.Version, events); // Once succesfully persisted, clear events from list of uncommitted events aggregate.ClearUncommittedEvents(); }
public async Task SaveAggregate(TAggregateRoot aggregate) { if (!aggregate.HasChanges()) { return; } var streamId = GetStreamId(aggregate.AggregateId); var changes = aggregate.GetChanges(); if (aggregate.AggregateIsNotPersisted()) { await _eventStore.CreateStream(streamId, changes); } else { await _eventStore.AppendStream(streamId, changes, aggregate.AggregateVersion); } }