/// <summary> /// Loads from event. /// </summary> /// <param name="event">The event.</param> public void LoadFromEvent(AggregateEvent @event) { Check.NotNull(() => @event); if (@event.Context != null) { @event.Context.ForEach(x => this.Storage.AddOrReplace(x.Key, x.Value)); } }
/// <summary> /// Adds the event. /// </summary> /// <param name="event">The event.</param> private void AddEvent(AggregateEvent @event) { Check.NotNull(() => @event); if (@event.AggregateVersion > 0) { if (this.version >= @event.AggregateVersion) { throw new EventSourcingException( S.Invariant($"The aggregate {Uid} has already consumed an event with version {this.version} before and the event has version {@event.AggregateVersion}")); } this.version = @event.AggregateVersion; } else { @event.AggregateVersion = Interlocked.Increment(ref this.version); } @event.AggregateUid = this.Uid; this.events.Add(@event); }
private void AddEvent(AggregateEvent @event) { Check.NotNull(() => @event); this.workContext.Events.Enqueue(@event); this.DispatcherHub?.Dispatch(@event); }
/// <summary> /// Attaches to event. /// </summary> /// <param name="event">The event.</param> public void AttachToEvent(AggregateEvent @event) { Check.NotNull(() => @event); @event.Context = Clone(this.Storage); }