/// <summary>
 /// Constructor for building a select statement for using in CRUD operations
 /// with a command builder.
 /// </summary>
 /// <param name="operationInput"></param>
 /// <param name="lookupCondition"></param>
 /// <param name="operationType"></param>
 public SqlQueryBuilder(DataEntity operationInput, Expression lookupCondition, Globals.OperationType operationType)
 {
     Parse(operationInput, lookupCondition, operationType);
 }
        /// <summary>
        /// Create a select string from the given table and columns.
        /// </summary>
        /// <param name="input"></param>
        /// <param name="lookupCondition"></param>
        /// <param name="operationType"></param>
        private void Parse(DataEntity input, Expression lookupCondition, Globals.OperationType operationType)
        {
            StringBuilder query;

            switch (operationType)
            {
                case Globals.OperationType.Create:
                    query = new StringBuilder(CreateKeyword);
                    // add into clause
                    query.Append(ParseInsertQuery(input));
                    break;
                case Globals.OperationType.Delete:
                    query = new StringBuilder(DeleteKeyword);
                    // add from clause
                    query.Append(ParseFromClause(input));
                    break;
                case  Globals.OperationType.Update:
                    query = new StringBuilder(UpdateKeyword);
                    //add the set values
                    query.Append(ParseUpdateQuery(input));
                    break;
                default:
                    query = new StringBuilder(SelectKeyword);
                    // add columns
                    query.Append(ParseColumns(input.Properties));
                    // add from clause
                    query.Append(ParseFromClause(input));
                    break;
            }

            // add where clause (optional))
            if (lookupCondition != null)
            {
                var whereClause = new StringBuilder(" where ");
                ParseWhereClause(whereClause, lookupCondition);
                query.Append(whereClause);
            }

            _query = query.ToString();
        }