我所做的工作涉及到從SQL服務器數據庫中下載大量數據。爲此,我們使用SqlDataReader加載自定義數據集定義,然後遍歷Datatable並將每行構建到一個對象中,然後通常將這些對象打包爲一個大型字典。自定義通用IEnumerator綁定到數據庫
我們使用的數據量足夠大,有時無法放入具有內存上限的單個數據表。在極端情況下,字典甚至已經增長到足以超過8 GB的系統內存。我負責修復數據表溢出時引發的內存異常。我通過實現批處理方法來實現這一點,該方法似乎與數據表的使用方式有衝突,但它暫時有效。
我現在的任務是進一步減少這個過程的內存需求。我的想法是創建一個一般類型的繼承自IEnumerator的類,它接受一個SqlDataReader並基本上使用閱讀器作爲它正在枚舉的集合。 MoveNext()函數將推進閱讀器,並且Current屬性將從閱讀器的當前行返回由構建器方法構建的指定類型的對象。
我的問題:這是一個可行的想法?我從來沒有聽說過/無法在網上找到任何喜歡它的東西。
另外,邏輯上:當我調用當前屬性時,如何調用類型聲明要求的特定構建器函數?
我很樂意批評和批評夢想的一個愚蠢的想法。我最想找到實現總體目標的最佳做法。
我想我應該在你的書中讀到第6章... :) – Jared275 2012-08-08 15:57:51
@ Jared275:Soun ds對我很好:) – 2012-08-08 15:58:35