gpt4 book ai didi

c# - 如何在 Entity Framework 5 中使用 SQL Server OFFSET 和 FETCH FIRST?

转载 作者:太空狗 更新时间:2023-10-29 17:58:20 25 4
gpt4 key购买 nike

在 SQL Server 2012 中引入的 OFFSETFETCH FIRST 关键字在 EntityFramework 5 和 Linq to SQL 中是否受支持?

当使用 SELECT * FROM tables ORDER BY stime DESC OFFSET 0 ROWS FETCH FIRST 10 ROWS ONLY 而不是 var a= db.table.Skip(0) 时,它显示出 50% 的性能提升.Take(10);

最佳答案

简短的回答是否定的,它在 EF5 中不受支持,但是 Entity Framework 6.1.2 版刚刚发布,如 noted on the ADO.NET blog . 6.1.2 中的一项新功能是支持 OFFSET..FETCH SQL Server 2012+ 分页语法。

当您购买像 Entity Framework 这样的 ORM 时,您就是在外包查询生成(出于完全正当的理由)。 EF 是使用带有 Row_Number() 的“较旧”CTE 样式查询还是较新的 Fetch/Offset 是一个实现细节。 Microsoft 可以随时更新 EF 代码并更改查询生成以使用其中一个。 Reference

If you want control over the query generation, you either:

Use EF's 'stored procedure mapping' ability Use stored procedures directly with EF (something I do quite often) write the ADO/SQL yourself, or use a more limited micro-orm like massive/PetaPoco So does it matter?

Well, to a developer writing queries the new syntax is going to be a welcome relief. On the other hand, it doesn't appear that there is a real performance difference between the old CTE method and the new syntax. So from EF's perspective -- not really. We incur a significant overhead using EF, the method of paging probably won't be your break point. Refrance

关于c# - 如何在 Entity Framework 5 中使用 SQL Server OFFSET 和 FETCH FIRST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18331399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com