避免在实体框架中对结果进行动态排序

本文关键字:结果 动态 排序 实体 框架 | 更新日期: 2023-09-27 18:34:52

我正在使用带有一些 where 条件的实体框架从数据库中从数据库中获取用户表中的记录。 当我在 Sql Server 2008 R2 中执行查询时,结果的显示顺序与实体框架生成的结果不同。默认情况下,实体框架根据主键对结果进行排序。但我不想要任何订购。我想要记录,因为它们出现在 Sql 服务器 R2 中。

避免在实体框架中对结果进行动态排序

也许您可以删除 EF 应用的顺序(如果有(,但您的请求"我希望行的顺序与它们在 SQL Server 上的显示顺序相同"(我将其读作"我从 SSMS 运行查询时看到的相同顺序"(无法满足。

在SQL(以及SQL服务器(中,行没有顺序,当您进行查询时,RDBMS根据不受您控制的各种因素决定输出的顺序:当前负载,CPU,RAM,行数,索引,许多其他。

这意味着您不能期望任何排序,甚至不能期望您在 SSMS 上看到的相同"无序订单"。

连续

两次执行相同的查询可能会生成两个行相同但顺序不同的结果集,这是正确的,也是预期的。

使用不同的工具执行相同的查询也可能生成具有不同顺序的集合。

这是一篇旧的(但仍然有效(的文章,其中包含几个示例和测试,表明如果不指定 order by 子句,则无法对结果集的顺序有任何期望。