public void Add(Order order)
 {
     var orderState = new Order.ToState().Build(order);
     using (var connection = new SqlConnection(SqlConnectionLocator.LocalhostSqlExpress())) {
         connection.Execute(SqlQueries.InsertOrderQuery, orderState);
         connection.Execute(SqlQueries.InsertOrderLineQuery, orderState.Lines);
     }
 }
 public void Add(Order order)
 {
     var orderState = new Order.ToState().Build(order);
     using (var dataContext = new DataContext()) {
         dataContext.Set<OrderState>().Add(orderState);
         dataContext.SaveChanges();
     }
 }
 public void Update(Order order)
 {
     var orderState = new Order.ToState().Build(order);
     using (var dataContext = new DataContext()) {
         dataContext.Entry(orderState).State = EntityState.Modified;
         orderState.Lines.ForEach(x => dataContext.Entry(x).State = EntityState.Added);
         dataContext.SaveChanges();
     }
 }
 public OrderState Build(Order order)
 {
     return new OrderState
     {
         Id = order.Id,
         OrderStatus = order._orderStatus,
         SubmitDate = order.SubmitDate,
         TotalCost = order.TotalCost,
         Lines = new OrderLine.ToState().Build(order._lines, x => x.OrderId = order.Id).ToList()
     };
 }
            public Order Build(OrderState orderState)
            {
                var order = new Order
                {
                    Id = orderState.Id,
                    _orderStatus = orderState.OrderStatus,
                    SubmitDate = orderState.SubmitDate,
                    TotalCost = orderState.TotalCost,
                };

                order._lines.Clear();
                order._lines.AddRange(new OrderLine.FromState().Build(orderState.Lines));

                return order;
            }