Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 我应该在哪一层上订购从数据库接收的列表_Asp.net Mvc 3_Entity Framework 4.1_Soa - Fatal编程技术网

Asp.net mvc 3 我应该在哪一层上订购从数据库接收的列表

Asp.net mvc 3 我应该在哪一层上订购从数据库接收的列表,asp.net-mvc-3,entity-framework-4.1,soa,Asp.net Mvc 3,Entity Framework 4.1,Soa,我正在使用具有多个层的实体框架(SOA架构)。我想知道在哪里最好对列表或IEnumerable进行排序。。它会在存储库的持久层上吗?它会在服务层上吗?还是在表示层上?(在控制器中) 和为什么?当然可以在任何层次对列表进行排序,但您必须记住您选择的含义 如果要处理大型数据集,可能需要在数据库级别对其进行排序(出于性能原因)。如果数据集很小,这不是问题 如果在数据访问层执行排序:您必须将排序选项传递给GetList方法,或者将所有方法调用方置于相同的排序顺序 我认为排序顺序更像是一个UI问题,最好在

我正在使用具有多个层的实体框架(SOA架构)。我想知道在哪里最好对列表或IEnumerable进行排序。。它会在存储库的持久层上吗?它会在服务层上吗?还是在表示层上?(在控制器中)


为什么

当然可以在任何层次对列表进行排序,但您必须记住您选择的含义

如果要处理大型数据集,可能需要在数据库级别对其进行排序(出于性能原因)。如果数据集很小,这不是问题

如果在数据访问层执行排序:您必须将排序选项传递给
GetList
方法,或者将所有方法调用方置于相同的排序顺序

我认为排序顺序更像是一个UI问题,最好在表示层处理(在您的例子中是控制器操作)。
更新@Rushino评论: 如果您在数据库级别进行分页,那么除了在数据库级别进行排序之外别无选择。
更新2 这就是为什么在数据库级别进行分页时需要在数据库级别进行排序。我将举例说明: 给定样本数据:

3
2
6
4
5
一,

场景1:数据库分页,数据层排序

当您请求第1页(页面大小为3)时,数据库将返回:

3
2
六,

然后,数据层将对此进行排序并返回:

2
3
六,

场景2:数据库中的排序和分页

当您请求第1页(页面大小为3)时,数据库将首先排序:

1
2
3
4
5
六,

然后将第1页返回到数据层:

1
2
三,


如您所见,在进行分页时在数据库中进行排序的原因并不是因为数据量。这是因为这是获得正确结果的唯一方法。

这就是我在表示层上的想法。。我还忘了提到它,但当我从数据库中获取数据时,它总是以100条记录(或用户定义的低记录集)的形式存在。。用于分页。在这种情况下,您必须在数据库级别进行排序。