// ----- Internal logics private static void SaveUncommitedEvents(Order order) { var domainEvents = order.GetUncommittedEvents(); var persistedEvents = domainEvents.Select(ConvertToPersistentEvent); using (var dataContext = new DataContext()) { dataContext.Set<OrderEvent>().AddRange(persistedEvents); dataContext.SaveChanges(); } }
public void Delete(Guid orderId) { var @event = new OrderDeleted(orderId); var eventToPersist = ConvertToPersistentEvent(@event); using (var dataContext = new DataContext()) { dataContext.Set<OrderEvent>().Add(eventToPersist); dataContext.SaveChanges(); } }
public Order Get(Guid id) { using (var dataContext = new DataContext()) { var domainEvents = dataContext .Set<OrderEvent>() .Where(x => x.AggregateId == id) .OrderBy(x => x.CreationDate) .ToArray() .Select(ConvertToDomainEvent) .ToArray(); var order = new Order(); order.Replay(domainEvents); if (order.IsDeleted) { return null; } return order; } }