Sql server 为SQLServer2005/2008编写可重用的数据迭代器

Sql server 为SQLServer2005/2008编写可重用的数据迭代器,sql-server,iterator,sql-server-ce,dynamic-sql,Sql Server,Iterator,Sql Server Ce,Dynamic Sql,我正在尝试为SQL编写一个数据迭代器,看起来最好的方法是为这个问题编写一些动态SQL 我希望迭代器支持数据的分页、排序和过滤,理想情况下不在内存副本上进行迭代,而是不首先选择数据,也许LINQ to SQL或Entity Framework会提供类似的功能 有趣的是,我已经为所有数据库的SQLCE编写了一个很好的数据迭代器,它支持SqlCeResultSet,还有一个ExecuteSultSet概念,这使得这非常简单,但它还没有成为功能齐全的服务器数据库产品。我可以想象为什么这基本上是一个嵌入式

我正在尝试为SQL编写一个数据迭代器,看起来最好的方法是为这个问题编写一些动态SQL

我希望迭代器支持数据的分页、排序和过滤,理想情况下不在内存副本上进行迭代,而是不首先选择数据,也许LINQ to SQL或Entity Framework会提供类似的功能

有趣的是,我已经为所有数据库的SQLCE编写了一个很好的数据迭代器,它支持SqlCeResultSet,还有一个ExecuteSultSet概念,这使得这非常简单,但它还没有成为功能齐全的服务器数据库产品。我可以想象为什么这基本上是一个嵌入式数据库,您可以在单用户模式下锁定它,而且语言支持也减少了,使它更容易

也许我太累了,或者没有受过足够的教育,无法理解一种可以接受的方法。我认为做一个SQL数据读取器可能是个好办法,但如果我没有弄错的话,你需要在迭代时保持连接打开,这似乎没有多大意义,另一种方法是只选择数据页并返回它,然后在该集合上提供一个迭代器,当你到达终点时,它会下拉下一页,这将起作用,但意味着我必须编写大量SQL构造来支持排序、筛选和分页,但最终这可能是解决方案


谢谢

这里有一个链接,展示了如何使用实体框架进行分页:


我同意设拉子的观点-使用LINQ执行服务器端分页是一种可行的方法。可以使用完全相同的逻辑对对象集合(实现IEnumerable)进行分页,就像在SQL中对服务器端分页一样


您可以在上找到示例。

您应该给出上下文。这很重要。NET或WinForms,wtc。现在还不清楚您希望迭代器支持什么。如果只是winforms或asp.net显示数据,那么上下文有什么关系,只要您只想从数据层返回数据的子集。为了澄清这一点,我只需要一个在sql层工作的迭代器,因此我要么生成自己的t-sql,要么使用工具自动生成它,sql需要支持数据的分页、过滤和排序。支持异步通信,并且在对数据进行分页时不需要保持活动连接是有意义的。分页、排序和筛选都是由UI启动的—UI技术的本质在这里很重要。