Example #1
0
        public void ORM_TableQuery_Paging_PageNumer1()
        {
            var f = QueryFactory.Instance;
            var source = f.Table(RF.Concrete<ArticleRepository>());
            var pk = source.Column(Entity.IdProperty);
            var query = f.Query(
                from: source,
                where: f.Constraint(pk, PropertyOperator.Greater, 0),
                orderBy: new List<IOrderBy>
                {
                    f.OrderBy(source.Column(Article.CodeProperty))
                }
            );

            var generator = new SqlServerSqlGenerator { AutoQuota = false };
            f.Generate(generator, query);
            var sql = generator.Sql;
            Assert.IsTrue(sql.ToString() ==
            @"SELECT *
            FROM Article
            WHERE Article.Id > {0}
            ORDER BY Article.Code ASC");

            //对于已经组装完成的 IQuery 对象,ModifyToPagingTree 方法同样可以为其生成相应的分页 SqlSelect 语句。
            var pagedSelect = generator.ModifyToPagingTree(query as SqlSelect, pk as SqlColumn, new PagingInfo(1, 10));

            generator = new SqlServerSqlGenerator { AutoQuota = false };
            generator.Generate(pagedSelect);
            var pagingSql = generator.Sql;
            Assert.IsTrue(pagingSql.ToString() ==
            @"SELECT TOP 10 *
            FROM Article
            WHERE Article.Id > {0}
            ORDER BY Article.Code ASC");
        }
Example #2
0
        public void ORM_SqlTree_Select_Paging_PageNumer1()
        {
            var table = new SqlTable { TableName = "ASN" };
            var pk = new SqlColumn { Table = table, ColumnName = "Id" };

            var select = new SqlSelect
            {
                Selection = new SqlSelectAll(),
                From = table,
                Where = new SqlColumnConstraint
                {
                    Column = pk,
                    Operator = SqlColumnConstraintOperator.Greater,
                    Value = 0
                },
                OrderBy = new List<SqlOrderBy>
                {
                    new SqlOrderBy
                    {
                        Column = new SqlColumn{ Table = table, ColumnName = "AsnCode" },
                        Direction = OrderDirection.Ascending
                    }
                }
            };
            var generator = new SqlServerSqlGenerator { AutoQuota = false };
            generator.Generate(select);
            var sql = generator.Sql;
            Assert.IsTrue(sql.ToString() ==
            @"SELECT *
            FROM ASN
            WHERE ASN.Id > {0}
            ORDER BY ASN.AsnCode ASC");

            var pagedSelect = generator.ModifyToPagingTree(select, pk, new PagingInfo(1, 10));

            generator = new SqlServerSqlGenerator { AutoQuota = false };
            generator.Generate(pagedSelect);
            var pagingSql = generator.Sql;
            Assert.IsTrue(pagingSql.ToString() ==
            @"SELECT TOP 10 *
            FROM ASN
            WHERE ASN.Id > {0}
            ORDER BY ASN.AsnCode ASC");
        }