2013-10-22 12 views
4

我讀過幾篇有關何時使用DataSet與WinForms應用程序中的數據庫結合的MS文章。我當然喜歡DataSets提供的易用性,但在將它們用於大型數據源時有一些問題。我想使用SQLite數據庫來本地存儲處理的Web日誌信息。這可能會導致數以萬計的數據行。數據源非常大時DataSet的用法?

當數據集通過數據庫表填充時,它最終是包含數據庫中的所有數據,還是隻包含數據庫中的部分數據?

我可以使用DataSet向數據庫添加行,例如執行Update,以某種方式「清除」DataSet在內存中保存的內容,然後執行額外的行添加?

那麼是否有可能實質上管理DataSet當前在內存中保存的內容?如果DataSet表示一個包含100,000行的表,那麼是否意味着在數據庫甚至可用之前,需要從數據庫將所有100,000行加載到內存中?

謝謝。

回答

2

這裏有很重要的一點。這些觀點是在.Net開始的時候提出的,當時我們突然轉向.NET中引入的斷開狀態。

您的問題的答案是分頁。您需要手動編寫網格或其他顯示設備(控件),以便以數據塊的形式查詢數據庫。例如,您有一個控件(但不包含網格),它具有字段和滾動條。你給你的滾動201點擊。在200次點擊中,它滾動瀏覽200條記錄,點擊#201,它會查詢數據庫200多條記錄。可能是,當數據集中的數量達到1000時,添加一些邏輯來刪除200條記錄。這僅僅是一個例子。

要保存數據,您可以將其添加到此DataSet/DataTable。做這件事的方法很少。 DataSet/DataTable有能力識別新的或編輯的行,關係等。在嚴重的系統上,實體列表封裝了Datatables並提供自定義。

可能是你想看看Entity Framework的能力。我不確定這個功能是否包含在那裏。

基本上,對於一些使用小數據的簡單應用,可以使用開箱即用的ADO.net。但是在一個嚴肅的系統中,通常ADO.NET需要大量的基礎工作來提供可靠的數據訪問層和更多額外的工作來創造良好的用戶體驗。在這種情況下,它將以塊加載數據,因爲如果加載100K記錄,用戶將不得不等待先加載,然後很難滾動所有記錄。最後,你需要看看你的應用程序是什麼,它是什麼,以及對用戶來說令人滿意或不滿意的東西。

相關問題