public IEnumerable<Order> FindBy(Query query)
        {
            // Move to method below with Index and count

            IList<Order> orders = new List<Order>();

            using (SqlConnection connection =
                      new SqlConnection(_connectionString))
            {
                SqlCommand command = connection.CreateCommand();
                query.TranslateInto(command);
                connection.Open();

                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        orders.Add(new Order
                        {
                            CustomerId = new Guid(reader["CustomerId"].ToString()),
                            OrderDate = DateTime.Parse(reader["OrderDate"].ToString()),
                            Id =int.Parse(reader["Id"].ToString())
                        });

                     }
                 }
            }

                return orders;
        }
        public static Query CreateRetrieveOrdersUsingAComplexQuery(Guid CustomerId)
        {
            IList<Criterion> criteria = new List<Criterion>();
            Query query = new Query(QueryName.RetrieveOrdersUsingAComplexQuery, criteria);

            criteria.Add(new Criterion ("CustomerId", CustomerId, CriteriaOperator.NotApplicable));

            return query;
        }
        public IEnumerable<Order> FindAllCustomersOrdersWithInOrderDateBy(Guid customerId, DateTime orderDate)
        {
            IEnumerable<Order> customerOrders = new List<Order>();

            Query query = new Query();
            query.Add(new Criterion("CustomerId", customerId, CriteriaOperator.Equal));
            query.QueryOperator = QueryOperator.And;
            query.Add(new Criterion("OrderDate", orderDate, CriteriaOperator.LessThanOrEqual));
            query.OrderByProperty = new OrderByClause("OrderDate", true);
            customerOrders = _orderRepository.FindBy(query);

            return customerOrders;
        }
        public IEnumerable<Order> FindAllCustomersOrdersBy(Guid customerId)
        {
            IEnumerable<Order> customerOrders = new List<Order>();

            Query query = new Query();

            //字符串
            //query.Add(new Criterion("CustomerId", customerId, CriteriaOperator.Equal));

            //Lambda
            query.Add(Criterion.Createe<Order>(o => o.CustomerId, customerId, CriteriaOperator.Equal));

            query.OrderByProperty = new OrderByClause("CustomerId", true);

            customerOrders = _orderRepository.FindBy(query);

            return customerOrders;
        }
 public IEnumerable<Order> FindBy(Query query, int index, int count)
 {
     throw new NotImplementedException();
 }
 private static string GetQueryOperator(Query query)
 {
     if (query.QueryOperator == QueryOperator.And)
         return "AND ";
     else
         return "OR ";
 }