Пример #1
0
        public async Task Commit()
        {
            using var transaction = _context.Database.BeginTransaction();

            try
            {
                var aggregate = _context.Aggregates.ToList().SingleOrDefault(b => b.Id == _aggregateId);

                if (aggregate == null)
                {
                    aggregate = new Aggregate
                    {
                        Id          = _aggregateId,
                        Type        = _aggregateType,
                        LastVersion = _aggregateActualVersion
                    };

                    _context.Aggregates.Add(aggregate);
                }
                else
                {
                    aggregate.LastVersion = _aggregateActualVersion;
                }

                _context.SaveChanges();

                foreach (var e in _events)
                {
                    var eventToSave = EventStoreDtoMapper.MapperFromEventToEventStoreDTO(e);
                    eventToSave.MetaData         = eventToSave.AggregateData;
                    eventToSave.AggregateVersion = e.EventVersion;
                    _context.Events.Add(eventToSave);

                    _context.SaveChanges();
                }

                await transaction.CommitAsync();
            }
            catch (Exception ex)
            {
                await transaction.RollbackAsync();

                throw ex;
            }
        }
 public void Store(StoredEvent theEvent)
 {
     _context.StoredEvent.Add(theEvent);
     _context.SaveChanges();
 }