Ejemplo n.º 1
0
        /// <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));
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
 private void AddEvent(AggregateEvent @event)
 {
     Check.NotNull(() => @event);
     this.workContext.Events.Enqueue(@event);
     this.DispatcherHub?.Dispatch(@event);
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Attaches to event.
 /// </summary>
 /// <param name="event">The event.</param>
 public void AttachToEvent(AggregateEvent @event)
 {
     Check.NotNull(() => @event);
     @event.Context = Clone(this.Storage);
 }