我的桌子:
CREATE TABLE "ADMIN"."TABLETEST"
(
"ID" NUMBER NOT NULL ENABLE,
"NOTE" NUMBER
)
我如何在实体框架中使用表格:
var s = entities.TABLETESTs.OrderByDescending(r => r.NOTE).Skip(10).Take(10);
以此生成的请求:
SELECT *
FROM
(SELECT
"Extent1"."ID" AS "ID",
"Extent1"."NOTE" AS "NOTE"
FROM
(SELECT
"Extent1"."ID" AS "ID",
"Extent1"."NOTE" AS "NOTE",
ROW_NUMBER() OVER (ORDER BY "Extent1"."NOTE" DESC) AS "row_number"
FROM
(SELECT
"TABLETEST"."ID" AS "ID",
"TABLETEST"."NOTE" AS "NOTE"
FROM
"ADMIN"."TABLETEST" "TABLETEST") "Extent1"
) "Extent1"
WHERE
("Extent1"."row_number" > 10)
ORDER BY
"Extent1"."NOTE" DESC
)
WHERE
(ROWNUM <= (10) )
如果您阅读了最后一个请求,您会发现它包含两个ORDER BY "Extent1"."NOTE" DESC
;为什么实体框架会生成两个“ order by”子句,这是否必要?因为如果我省略第二个“ order by”,我的请求会变得更快,并且得到与两个“ order by”相同的结果