Ejemplo n.º 1
0
        protected LoadList(IDbCommand dbCmd, SqlExpression <From> q)
        {
            dialectProvider = dbCmd.GetDialectProvider();

            if (q == null)
            {
                q = dialectProvider.SqlExpression <From>();
            }

            this.dbCmd = dbCmd;
            this.q     = q;

            //Use .Clone() to prevent SqlExpressionSelectFilter from adding params to original query
            var parentQ = q.Clone();
            var sql     = parentQ.SelectInto <Into>();

            parentResults = dbCmd.ExprConvertToList <Into>(sql, parentQ.Params, onlyFields: q.OnlyFields);

            modelDef  = ModelDefinition <Into> .Definition;
            fieldDefs = modelDef.AllFieldDefinitionsArray.Where(x => x.IsReference).ToList();

            var subQ    = q.Clone();
            var subQSql = dialectProvider.GetLoadChildrenSubSelect(subQ);

            subSql = dialectProvider.MergeParamsIntoSql(subQSql, subQ.Params);
        }
Ejemplo n.º 2
0
        public void SqlExpressionCloneTest()
        {
            SqlExpression e      = SqlDml.Literal(1);
            SqlExpression eClone = (SqlExpression)e.Clone();

            Assert.AreNotEqual(e, eClone);
            Assert.AreEqual(e.NodeType, eClone.NodeType);
        }
Ejemplo n.º 3
0
        protected string GetRefSelfSql(ModelDefinition modelDef, FieldDefinition refSelf, ModelDefinition refModelDef)
        {
            // Load Self Table.RefTableId PK
            var refQ = q.Clone();

            refQ.Select(dialectProvider.GetQuotedColumnName(modelDef, refSelf));

            var subSqlRef = refQ.ToMergedParamsSelectStatement();

            var sqlRef =
                $"SELECT {this.dialectProvider.GetColumnNames(refModelDef)} FROM {this.dialectProvider.GetQuotedTableName(refModelDef)} WHERE {this.dialectProvider.GetQuotedColumnName(refModelDef.PrimaryKey)} IN ({subSqlRef})";

            return(sqlRef);
        }
Ejemplo n.º 4
0
        protected string GetRefSelfSql(ModelDefinition modelDef, FieldDefinition refSelf, ModelDefinition refModelDef)
        {
            //Load Self Table.RefTableId PK
            var refQ = q.Clone();

            refQ.Select(dialectProvider.GetQuotedColumnName(modelDef, refSelf));
            refQ.OrderBy().ClearLimits(); //clear any ORDER BY or LIMIT's in Sub Select's

            var subSqlRef = refQ.ToMergedParamsSelectStatement();

            var sqlRef = $"SELECT {dialectProvider.GetColumnNames(refModelDef)} " +
                         $"FROM {dialectProvider.GetQuotedTableName(refModelDef)} " +
                         $"WHERE {dialectProvider.GetQuotedColumnName(refModelDef.PrimaryKey)} " +
                         $"IN ({subSqlRef})";

            return(sqlRef);
        }