( 聲明:本系列只想給大家介紹.net框架,并不是語(yǔ)法和類的使用的講解,所以只能概括的描述一下所提到的類,如果有疑問(wèn)可以到MSDN上面去查 )
ADO.net類庫(kù)有兩種完全不同的方式來(lái)實(shí)現(xiàn)數(shù)據(jù)訪問(wèn):連接式和斷開式.ADO.NET沒有提供單一的方式和不同的數(shù)據(jù)庫(kù)進(jìn)行通信,而是提供了多種數(shù)據(jù)提供器,這樣的好處是可以將某種類型數(shù)據(jù)庫(kù)的特性發(fā)揮出來(lái).我們來(lái)看看ADO.NET中的核心類。
IDbConnection:定義配置某個(gè)數(shù)據(jù)庫(kù)連接的一些成員。如連接字符串,超時(shí),連接狀態(tài)等。
IDbCommand:定義命令以及所執(zhí)行的操作。如ComandText,ExecuteReader,ExecuteNonquery,Parameter等。
IDbDataParameter:他繼承了IDataParmeter并擴(kuò)展了他,定義了DbType,Direction,ParameterName,Value等。
IDbDataAdapter:繼承自IdataAdapter,IdataAdapter中主要來(lái)完成數(shù)據(jù)的映射,然后IDbDataAdapter擴(kuò)展了IdataAdapter,加入了,Delete,select,Update,Insert這四個(gè)IDbCommand命令。GOF23中的Adapter(適配器)模式在這里被使用,SqlAdapter等類就是用來(lái)適配各種已經(jīng)有了詳細(xì)接口的DB。
IDataReader:IDataReader繼承了IDataRecord并對(duì)其擴(kuò)展,Idatarecord用來(lái)定義讀取強(qiáng)類型化的數(shù)據(jù),Getint16,GetDateTime之類,Idatareader加入了讀取對(duì)象的常用行為,Next,Depth等。
圖中Dbconnection,DbCommand等抽象類分別繼承了上述的接口,并實(shí)現(xiàn)了一些任何數(shù)據(jù)庫(kù)都公用的方法而已,這里不再贅述。
他們之間的協(xié)作關(guān)系如圖:
在這里就要講到題目所示的架構(gòu)模式中的數(shù)據(jù)源架構(gòu)模式和領(lǐng)域邏輯模式,MS在這里用了什么模式呢,首先我們來(lái)了解一下數(shù)據(jù)源都有哪幾種架構(gòu)模式:
1.表數(shù)據(jù)入口:一個(gè)表實(shí)例處理數(shù)據(jù)庫(kù)表中的所有行.(Adapter中承載了一張表,他就代表數(shù)據(jù)庫(kù),可以對(duì)數(shù)據(jù)進(jìn)行填刪改查等操作)
2.行數(shù)據(jù)入口:訪問(wèn)表中單條記錄地對(duì)象,一行一個(gè)實(shí)例.(DataReader,這里的行數(shù)據(jù)只能讀取,而不能修改.每一次Reader.Next(),就會(huì)返回一個(gè)數(shù)據(jù)行.)
3.?dāng)?shù)據(jù)影射器(ORM):.net中沒有這種模式,ORM本身就很復(fù)雜,這里就不講解了.
在.net中有表數(shù)據(jù)入口和行數(shù)據(jù)入口,這兩種模式的實(shí)現(xiàn)是為了滿足一些應(yīng)用,行數(shù)據(jù)可以更好的面向?qū)ο螅頂?shù)據(jù)操作起來(lái)直觀.
領(lǐng)域邏輯模式,也就是所謂的業(yè)務(wù)羅基層,它有以下幾種架構(gòu)模式:
1.事物腳本:也就是使用過(guò)程來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯.老ASP的寫法,就是這種過(guò)程性的編程.
2.領(lǐng)域模型:合并了行為和數(shù)據(jù)的對(duì)象模型,比如你建立了一個(gè)Person類,里面包括他的名字,這就是數(shù)據(jù),然后你的業(yè)務(wù)邏輯是給他改名字,就會(huì)做一個(gè)改名字的方法.這就是簡(jiǎn)單的領(lǐng)域模型.
3.表模塊:處理數(shù)據(jù)庫(kù)表或視圖中的所有業(yè)務(wù)邏輯的一個(gè)實(shí)例,他通常需要平臺(tái)的支持,而.NET中的DataSet就是這種模式的應(yīng)用。
我們可以用Dataset來(lái)完成我們的業(yè)務(wù)邏輯,一個(gè)很方便的應(yīng)用.
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
