2009-07-19 9 views
1

我正在尝试为SQL编写数据迭代器,它看起来最好的方法是为此问题编写一些动态sql。为SQL Server 2005/2008编写可重复使用的数据迭代器

我希望迭代器支持数据的分页,排序和过滤,理想情况下不是遍历内存副本,而是不首先选择数据,也许LINQ to SQL或Entity Framework会提供一些东西类似?

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

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

感谢

+0

你应该给上下文。它很重要。 ASP.NET或WinForms,wtc。真的不清楚你想要你的迭代器支持什么。 – 2009-07-19 20:54:16

回答

0

我同意西拉 - 使用LINQ执行服务器端分页是要走的路。您可以使用完全相同的逻辑来页面化一组对象(实现IEnumerable),以便在SQL中执行服务器端分页。

您可以在StackOverflow here上找到示例。