我正在開發一個在非常大的表中搜索信息的方法。由於我沒有使用ORDER BY
或查詢中的任何特殊內容(只是簡單的SELECT id,description FROM complain WHERE description like 'YOUR TEXT HERE'"
),我希望通過返回批次結果來提供更加動態的用戶體驗。這與在Management Studio中運行查詢類似。方法「部分」返回
一些細節,我的調用堆棧並不大,但並不是所有的方法都是相同的。每個不同層(Interface,SearchBLL和SearchDAL)分別有buttonSearchClick
,performCleanSearch
和searchComplainBasedOnDetailInfo
。
我想過如何創建一個像List<Complain>
那樣的異步方法,但看起來並不乾淨。我將不得不做3層異步。有沒有人有更好的想法如何實現這個?或者這是做到這一點的最佳方式?
EDIT1:我已經成功地使用SqlCommand.BeginExecuteReader一起異步處理在連接字符串來從查詢的結果,因爲它們出現...現在我必須找出一種方法,使我的DAL方法是異步的,所以上層可以獲取結果也異步...我想實現某種緩衝區...也許是一個隊列...
編輯2:我不是在找一個分頁解決方案或像一個twitter(你在哪裏滾動和搜索新結果),因爲我知道一個事實,即用戶將不得不讀取所有提取的信息...
這可能是你有幫助http://stackoverflow.com/questions/9234730/respond-to-async-sql-calls -as-they-complete – 2013-03-13 14:12:04
您可以使用'yield return'來評估您的結果。 – Romoku 2013-03-13 14:15:10
類似於@Luke所說的 - 你可能會考慮分頁:http://shackoverflow.com/questions/5335797/microsoft-sql-server-paging – 2013-03-13 14:17:15