2009-07-19 10 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上找到示例。