Пример #1
0
        public virtual void UpdatePublishedVersion(EventPublishedVersionData versionData)
        {
            _versionCache.GetOrAdd(versionData.AggregateRootTypeCode, aggregateRootTypeCode => new ConcurrentDictionary <string, int>())
            .AddOrUpdate(versionData.AggregateRootId,
                         aggregateRootId => versionData.Version,
                         (aggregateRootId, version) => {
                if (version > versionData.Version)
                {
                    return(version);
                }

                return(versionData.Version);
            });
        }
Пример #2
0
        private void EventExecutedAndVersionPublished(EventStream @event)
        {
            @event.Events.ForEach(TryExecuteEvent);

            var versionData = new EventPublishedVersionData {
                AggregateRootId       = @event.AggregateRootId,
                AggregateRootTypeCode = @event.AggregateRootTypeCode,
                Version = @event.EndVersion
            };

            if (@event.StartVersion == 1)
            {
                _eventPublishedVersionStore.WriteFirstVersion(versionData);
            }
            else
            {
                _eventPublishedVersionStore.UpdatePublishedVersion(versionData);
            }
        }
Пример #3
0
 public virtual void WriteFirstVersion(EventPublishedVersionData versionData)
 {
     this.UpdatePublishedVersion(versionData);
 }