public IList<Order> StoreAll(Customer customer, IList<Order> orders)
        {
            foreach (var order in orders)
            {
                if (order.Id == default(Guid))
                {
                    order.Id = Guid.NewGuid();
                }
                order.UserId = customer.Id;
                if (!customer.Orders.Contains(order.Id))
                {
                    customer.Orders.Add(order.Id);
                }

                foreach (var x in order.Lines)
                    _redisClient
                        .IncrementItemInSortedSet(RedisKeys.BestSellingItems,
                            (string) x.Item, (long) x.Quantity);

            }
            var orderIds = orders.Select(o => o.Id.ToString()).ToList();
            using (var transaction = _redisClient.CreateTransaction())
            {
                transaction.QueueCommand(c => c.Store(customer));
                transaction.QueueCommand(c => c.StoreAll(orders));
                transaction.QueueCommand(c => c.AddRangeToSet(RedisKeys
                    .GetCustomerOrdersReferenceKey(customer.Id),
                    orderIds));
                transaction.Commit();
            }

            return orders;
        }
        public Customer Store(Customer customer)
        {
            var typedClient = _redisClient.As<Customer>();

            if (customer.Id == default(Guid))
            {
                customer.Id = Guid.NewGuid();
            }
            return typedClient.Store(customer);
        }
 public Order Store(Customer customer, Order order)
 {
     IList<Order> result = StoreAll(customer, new List<Order>() { order });
     return result.FirstOrDefault();
 }