Example #1
0
        private IDbCommand AssembleCommand <TFrom, TWhere>(bool isRetrieve, string selectClause, FromExpression <TFrom>?fromCondition, WhereExpression <TWhere>?whereCondition, IList <IDataParameter>?parameters)
            where TFrom : Entity, new()
            where TWhere : Entity, new()
        {
            IDbCommand command = _databaseEngine.CreateEmptyCommand();

            command.CommandType = CommandType.Text;
            command.CommandText = selectClause;

            if (isRetrieve)
            {
                if (fromCondition == null)
                {
                    fromCondition = NewFrom <TFrom>();
                }

                command.CommandText += fromCondition.ToString();

                foreach (KeyValuePair <string, object> pair in fromCondition.GetParameters())
                {
                    IDataParameter param = _databaseEngine.CreateParameter(pair.Key, pair.Value);
                    command.Parameters.Add(param);
                }
            }

            if (whereCondition != null)
            {
                command.CommandText += whereCondition.ToString();

                foreach (KeyValuePair <string, object> pair in whereCondition.GetParameters())
                {
                    IDataParameter param = _databaseEngine.CreateParameter(pair.Key, pair.Value);
                    command.Parameters.Add(param);
                }
            }

            if (parameters != null)
            {
                foreach (IDataParameter param in parameters)
                {
                    command.Parameters.Add(param);
                }
            }

            return(command);
        }