轉:dotext資料庫篇

來源:互聯網
上載者:User
http://www.tt52.cn/blogview.asp?logID=178&cateID=3
首先我們先來看看組件 Data Access Application Block,它是微軟以原始碼形式提供的一個最佳化的資料訪問組件,你可以去
微軟下載,當然我們也可以在.text的sqlhelper.cs,adohelp.cs,sqlserver.cs三個檔案裡面找到全部代碼,sqlhelper和adohelp都包含
sqlhelper和SqlHelperParameterCache兩個類,sqlhelper用來向資料庫發出各種不同類型的命令,SqlHelperParameterCache負責
參數管理.而sqlserver類是adohelp.cs的虛擬類的實現,我們可以看到adohelp.cs裡面有很多visual的虛擬方法,正是因為這裡用的visual
而非abstract,這些虛擬成員都有預設實現,所以sqlserver類非常簡單。這個目錄下還有幾個其他的檔案,他們的作用我們後面再說。

下面我們以大家比較關心的分類來分析.text的資料訪問流程。
我們知道首頁有分類的顯示,那就看看首頁的分類是怎麼顯示出來的。
開啟aggsite下的Template.ascx(如果不明白為什麼要開啟這個檔案的,請參看入門篇)
可以看到這裡用的是一個SiteMoreCategory使用者控制項,再開啟這個使用者控制項,可以看到它又調用了link類
的GetCategoriesByParentID方法.繼續跟蹤發現又跑到DTOProvider類裡面,DTOProvider只有幾句代碼,但這幾句代碼非常關鍵,
它有一個static的建構函式,static的建構函式的好處在於,當我們調用一個類的靜態成員之前,它會自動執行!
而Instance則返回了一個IDTOProvider介面,這裡返回一個介面是一個非常巧妙的技巧,
就是說只要實現這個介面的類都可以通過這個方法返回,這也是我們在跟蹤很多資料訪問的代碼的時候,
都會有個DTOProvider.Instance().什麼的原因,呵呵.我們看看IDTOProvider裡面有些什麼,哇,好多東西!但都是空架子!
(你少說廢話,不是空的那還叫介面),
我們重點分析建構函式裡面的代碼, DTOProviderConfiguration dtoPC =Config.Settings.BlogProviders.DTOProvider;我考,
這什麼玩意,簡直是亂七八糟!哈哈,不過如果你結合web.config也很好理解,它搞這麼多層實際上也就是從web.config裡面讀取配置
的type="Dottext.Framework.Data.DataDTOProvider"而已.
我們回到IDTOProvider的方法GetCategoriesByParentID,因為DataDTOProvider是實現IDTOProvider介面的,
很自然我們到DataDTOProvider找這個方法的實現代碼,
DbProvider.Instance().GetCategoriesByType(catType,ActiveOnly),這句讓我們又要跑到dbprovider類裡面
在這個類裡面我們看到了與DTOProvider相類似的代碼,我們在web.config裡面找到
type="Dottext.Framework.Data.SqlDataProvider, Dottext.Framework",
怎麼又跑到web.config搞名堂了?
呵呵,聰明的你也許想到什麼,假如orcale公司也有個什麼Data Access Application Block(就算沒有,我們自己也可以寫一個),
那我們另寫一個OrcaleSqlDataProvider調用它,再把web.config
換成 type="Dottext.Framework.Data.OrcaleSqlDataProvider"什麼的,我們
不是就可以訪問orcale資料庫了?非常正確!兜了這麼大的圈子,我們主要的目的就是為了這個,呵呵.
在SqlDataProvider裡面找到GetCategoriesByType的實現代碼,可以看到它通過調用sqlhelper函數的方法,執行blog_GetCategoriesByType
預存程序,完成資料庫的讀取!

最後讓我們來總結一下:
config類
  從web.config裡面讀取動態配置資訊(配置也.text是很重要的一部分,有機會另外寫文章與大家一起研究)

IDTOProvider,DTOProvider,DataDTOProvider類  業務層
.text的功能代碼都在這裡實現,介面層(使用者控制項)直接調用這裡的成員就可以了

IDBProvider,DBProvider,SqlDATAProvider類   資料業務層
是業務層和資料訪問層的橋樑,因為這一層的存在,讓我們在使用多種資料來源的時候易如反掌

SqlHelper,ParameterCache類 資料訪問層
前面已經有說明

資料庫的表結構,預存程序什麼的,與其我來猜測,不如等dudu抽空給大家整理下吧.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.