(免责声明:我改变/混淆一些变量/表/列名在这里出于安全原因的,如果事情看起来有点过,请原谅我。)如何在SubSonic 2.2中执行Oracle top-n(分页)查询?
我建立一个前端一个Oracle 10g数据库,我试图获取分页数据。除了分页,下面的亚音速2.2的代码给我我想要的东西,在为了我希望它:
var q = new Select()
.From(AppDb.MyTable.Schema)
.Where(AppDb.MyTable.DisabledDateColumn).IsNull()
.OrderDesc(AppDb.MyTable.CreatedDateColumn.ColumnName)
System.Console.Out.Writeline(q.BuildStatement());
我们得到以下SQL:
SELECT
MYSCHEMA.MYTABLE.ID,
MYSCHEMA.MYTABLE.DISABLED_DATE
FROM
MYSCHEMA.MYTABLE
WHERE
MYSCHEMA.MYTABLE.DISABLED_DATE IS NULL
ORDER BY
CREATED_DATE DESC
然后我尝试引入分页:
var q = new Select()
.From(AppDb.MyTable.Schema)
.Where(AppDb.MyTable.DisabledDateColumn).IsNull()
.OrderDesc(AppDb.MyTable.CreatedDateColumn.ColumnName)
.Paged(0, 10);
而且它打掉我WHERE和ORDER BY子句:
SELECT * FROM (
SELECT
MYSCHEMA.MYTABLE.ID,
MYSCHEMA.MYTABLE.DISABLED_DATE,
ROWNUM as row_number
FROM
MYSCHEMA.MYTABLE
)
WHERE
row_number BETWEEN 1 AND 10
我是SubSonic的全新产品,所以我不知道这是否是一个错误,或者我不是这么做的首选方式,或者如果Oracle要求以不同的,更以Oracle为中心办法。 (甲骨文似乎要求一切。)
我想要的,如果它不明显,是每个后续页面包括10个最近创建,未禁用的记录。我如何在SubSonic 2.2中执行此操作?