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(); }