// ----- Internal logics
 private static void SaveUncommitedEvents(Order order)
 {
     var domainEvents = order.GetUncommittedEvents();
     var persistedEvents = domainEvents.Select(ConvertToPersistentEvent);
     using (var connection = new SqlConnection(SqlConnectionLocator.LocalhostSqlExpress())) {
         connection.Execute(SqlQueries.InsertOrderEventQuery, persistedEvents);
     }
 }
 // ----- 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 Order Get(Guid id)
        {
            using (var connection = new SqlConnection(SqlConnectionLocator.LocalhostSqlExpress())) {
                var domainEvents = connection
                    .Query<OrderEvent>(SqlQueries.SelectOrderEventQuery, new {id})
                    .OrderBy(x => x.CreationDate)
                    .ToArray()
                    .Select(ConvertToDomainEvent)
                    .ToArray();

                var order = new Order();
                order.Replay(domainEvents);
                if (order.IsDeleted) {
                    return null;
                }
                return order;
            }
        }
        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;
            }
        }
 public void Update(Order order)
 {
     SaveUncommitedEvents(order);
 }
 public void Add(Order order)
 {
     SaveUncommitedEvents(order);
 }