在XCode中如何使用高級查詢
對于一個框架來說,僅有基本的CURD不行,NewLife.XCode同時還提供了一個非常寬松的方式來使用高級查詢,以滿足各種復雜的查詢需求。
(本文同樣適用于其它任何數據訪問框架)
先上圖看一個復雜查詢的效果圖:
這里有8個固定的查詢條件和1個模糊查詢條件,加上多表關聯(7張表)、分頁、統計,如果用傳統的做法,這個查詢會非常的復雜。
這個頁面有XCode實現,核心查詢部分共100多行代碼,包括一個查詢、一個總記錄數分頁、兩個統計(就是業績、提成等的統計),看看高級查詢代碼:
可以看到,關鍵就在SearchWhere里面,另外四個方法,都是調用它,它的作用,就是為了構造一個where字句。
XCode不支持多表關聯(v7開始測底不支持,以前的支持太雞肋,幾乎從未使用),這種涉及多表關聯的查詢,就需要子查詢來代替了,看看SearchWhere:
可以看到,除了UserRelation外,基本都是通過子查詢來實現關聯查詢。而UserRelation是用戶關系表,數據比較固定,采用了二級實體緩存,對它的查詢幾乎不會形成數據庫查詢,緩存命中率不低于99%。
在各個小片段上使用MakeCondition格式化數據,保證這些代碼能根據當前數據庫生成相應的語句,使得系統能支持多數據庫。比如時間日期類型,在MSSQL是單引號邊界,在Access是井號邊界。
回過頭來,看看前端頁面是怎么做的,查詢條件區域:
這里用了好些用戶自定義控件,便于多個地方重用。
再看看ObjectDataSource是怎么配置的:
ObjectDataSource負責把查詢區域的控件跟后臺查詢方法的參數,給綁定起來,并且支持分頁查詢,讓前臺頁面,不需要寫代碼,就實現了高級分頁查詢。
并且,后臺的那些查詢方法,同樣適用于非ObjectDataSource的前臺,也適用于WinForm等應用系統之中!
NewLife.XCode下載地址:http://XCode.codeplex.com
沒有很完整的教程,只有本博客中的點點滴滴!初衷是跟大家交流技術,讓大家都掌握這些應用開發經驗,而不是讓大家都來用XCode!有了這些東西,你也可以做出來自己的XCode!







浙公網安備 33010602011771號