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"); }
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"); }