【发布时间】:2016-03-21 21:50:37
【问题描述】:
我正在查看 Microsoft 给出的这个示例,我完全明白他们想要做什么:http://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application
我的问题是:在进行分页或处理大型数据集(数百万或更多记录)时,如何有效地实现这一点?我阅读此代码的方式是,每次您从存储库中调用 GetStudents 时,它都会列出整个数据集。您如何使用存储库有效地实现搜索、排序和分页(我正在有效地定义,因为在应用程序中不必查询所有行来执行过滤/分页/排序操作)?在我的特殊情况下,我正在谈论实体框架。我过去曾使用 IQueryable 进行高效查询,但我看不到使用存储库模式生成高效存储查询的方法。请帮忙!
【问题讨论】:
-
他们在过滤器应用到
IQueryable之后执行ToList,因此只有过滤后的结果集从数据库返回。 -
您可能会通过编写自定义调整以过滤/分页数据库中的数据集的存储过程来获得最佳性能。您仍然可以使用存储库模式,只是您不会使用 EF 来自动生成数据库调用。
-
@GertArnold 有时过滤的结果集仍然是一百万条记录 :-)
-
不适用于分页,它们也适用。
-
@GertArnold 他们也适用的分页是什么意思?我错过了什么吗??
标签: asp.net-mvc entity-framework design-patterns