3,ORM組件XCode(簡介)

    XCode是一個輕量級的ORM組件(對象與關係數據庫映射),提供以面向對象的方式操做數據庫的功能,可以解決90%以上的數據庫操做場景。 html

    作爲X系列組件最重要的一員,XCode秉承了簡單實用的特色,力求以最簡單的作法,解決最廣泛的問題。 數據庫

    XCode最大的「缺點」就是「不支持」多表查詢!爲什麼不支持要加雙引號?那是由於XCode實際上支持多表查詢,只是用起來很是複雜,也不容易講清楚,會嚴重影響基本功能的學習理解,因此逢人問到,我都回答不支持!至於缺點二字加雙引號,是由於XCode有一整套替代方案,在絕大多數狀況上,更優於多表查詢。 緩存

 

    說XCode,就不得不提開發模式。每個ORM組件,都是在某一種開發模式下,才能表現得最出色,XCode也不例外,咱們稱之爲XCode開發模式。固然,每一個人有本身的想法,有本身的開發習慣,能夠嘗試根據本身的習慣去使用XCode,或者稍微修改本身的習慣,也許能有更精彩的用法。 學習

 

    XCode專一於對象與關係數據庫映射,內部明顯分爲上下兩層: 網站

    1,下層以DAL做爲入口,IDatabase做爲接口,各類數據庫實現一個類,實現該接口以支持多數據庫。DAL的兩大表明是Select(查詢SQL,返回DataSet)和Execute(執行SQL,返回影響行數),而且以SQL爲key,有一級緩存的支持。DAL還支持DbCommand的查詢和操做,不過就不受一級緩存的支持了。 spa

wps_clip_image-13847

(DAL層結構圖) 3d

    2,上層以Entity做爲泛型基類,全部實體類繼承於它。經典的LoadData可以把DataSet或者DataTable轉化爲實體對象集合,每行記錄實例化一個實體對象,每一個表字段的值賦值給實體對象的屬性。因此,徹底能夠以別的方式獲得DataSet,而後利用LoadData將其轉爲實體對象集合,而不必定須要DAL。能夠得知,XCode支持視圖,複雜查詢或者多表查詢能夠經過視圖變相解決,不過通常不推薦這麼作。增刪改查等操做,XCode實際上經過實體類的元數據等信息,動態拼接SQL,而後調用DAL層實現。 orm

wps_clip_image-11145

(加載記錄集和數據表) htm

wps_clip_image-5931

(執行插入操做,先拼接SQL,再執行) 對象

    此兩層結構說明,實際上就是XCode核心原理,任何人均可以根據這個原理來實現本身的ORM。至於結果組件的優劣程度,就看各自的功力以及對細節的考慮了。

 

    XCode的理念是以面向對象爲本,因此於本對象有關的東西都寫在本對象內。因此XCode是一個充血模型

 

    全部查詢操做(例如Find、FindAll、FindCount)都是靜態方法,由於它與具體對象無關;而對象操做(例如Insert、Update、Save、Delete)都是成員方法,由於它與具體對象密切相關,表明着對具體對象的操做。這是XCode模型的基本思想,一樣,爲實體類編寫業務代碼的時候,也應該嚴格遵循該原則,哪些應該是靜態的,哪些應該是成員的,要嚴格分開。

    固然,XCode實體類也支持貧血模型的一些操做方式,只不過操做類仍是自身而已,好比Insert、Update、Save、Delete也有靜態方法,而參數就是實體類對象。

XCode的模型,還有一個很重要的意義,就是徹底知足數據源組件ObjectDataSource的要求,使得XCode實體類能夠直接充當數據提供者。

wps_clip_image-2511

wps_clip_image-1271

(成對出現的FindAll/FindCount,參數徹底一摸同樣,正是ObjectDataSource的要求)

    本文僅是XCode的一個簡介,說明XCode的結構和開發模式,更詳細的說明請關注後文。

 

大石頭

新生命開發團隊

2010-08-20 00:36

做者: 大石頭 發表於 2010-09-13 01:27 原文連接

評論: 2 查看評論 發表評論

最新新聞:
· 是否該讓開發人員跟客戶直接交流?(2010-12-21 07:53)
· 亞馬遜副總裁跳槽Groupon任CFO(2010-12-21 07:50)
· Gmail語音服務將延長至2011年末(2010-12-21 07:49)
· AOL收購我的檔案網站About.me(2010-12-21 07:48)
· AT&T 19.25億美圓購入高通 700MHz 低頻頻譜(2010-12-21 07:42)

編輯推薦:Mono又更新了

網站導航:博客園首頁  個人園子  新聞  閃存  小組  博問  知識庫

相關文章
相關標籤/搜索