http://www.cnblogs.com/William_Fire/articles/125108.htmlhttp://www.cnblogs.com/William_Fire/articles/125819.htmlhttp://www.cnblogs.com/william_fire/articles/126665.htmlhttp://www.cnblogs.com/tintown/archive/2005/03/23/124395.htmlhttp://www.cnblogs.com/tintown/category/12787.htmlhttp://www.cnblogs.com/tintown/archive/2005/04/04/131784.htmlhttp://www.cnblogs.com/tintown/archive/2005/04/04/131784.html?Pending=true#PostPosthttp://www.cnblogs.com/tintown/archive/2005/04/07/132876.htmlhttp://blog.sunmast.com/sunmast/articles/816.aspxADO.NET對象模型:
http://www.phome.net/document/net/200504/net111246243813950.html
http://www.phome.net/document/net/200504/net111246243713949.html

ADO.NET--什么是關(guān)系型數(shù)據(jù)庫
http://www.phome.net/document/net/200504/net111246244913952.htmlADO.NET對象模型 http://blog.csdn.net/jabby12/archive/2004/08/02/59221.aspx
ADO.NET是專門為幫助開發(fā)人員開發(fā)高效的多層數(shù)據(jù)庫應(yīng)用程序設(shè)計的。ADO.NET對象模型可分為兩類:一類為“連接的”,一類為“斷開連接的”對象,后者允許將查詢結(jié)果保存在內(nèi)存中進行處理。
”連接的“對象模型顧名思義,它是直接與數(shù)據(jù)庫進行連接操作;“斷開連接”的對象模型可以說是建立在“連接的”對象模型的基礎(chǔ)上進行的,因為它必須先進行一次“連接的”操作,才能得到所需的結(jié)果。
舉個例 :
SqlConnection con=new SqlConnection("server=localhost;database=db,uid=sa,pwd=;");
SqlDataAdapter ad=new SqlDataAdapter("select * from table",con);
DataSet ds=new Dataset();
ad.Fill(ds,"table");
//注意這里已經(jīng)將從數(shù)據(jù)庫里查詢出來的結(jié)果放到一個Dataset對象里,從此刻開始,你就開始使用“斷開連接”的對象模型來對數(shù)據(jù)庫進行操作,DataSet對象是一個在內(nèi)存中的”虛數(shù)據(jù)表“,你可以對它進行任何操作而不影響數(shù)據(jù)庫,可以對它進行排序,修改,查詢,增加,刪除。而如果你想更改數(shù)據(jù)庫內(nèi)容的話,也可以通過DataSet對象來操作,很簡單,調(diào)用它的update()方法即可完成更新數(shù)據(jù)庫。也可以使用它的GetChanges()方法來獲取只更改過的行,它返回一個DataSet,這個Dataset不同于調(diào)用GetChanges()方法的那個,返回的這個只是它的一張子表,也就是更改過的數(shù)據(jù),利用此方法可以大大地提高多層ADO.NET應(yīng)用程序的性能。DataSet類還有一個Merge方法用來合并兩個DataSet對象的數(shù)據(jù),ADO.NET默認覆蓋被調(diào)用Merge()方法的DataSet中的行。
ADO.NET還提供了一種強類型的DATASET對象:它可以幫助你簡化建立數(shù)據(jù)訪問應(yīng)用程序的過程。例如:有個表叫table,其中有一列叫column你可以這樣來訪問此列:
vb.net: Dim ds as DataSet
Console.WriteLine(ds.table(0).column); (table(0).表示table表中的第1行)
c#: DataSet ds;
Console.WriteLine(ds.table[0].column); (table[0].表示table表中的第1行)
是不是很簡潔: ^_^
關(guān)于DataSet里面還有好多東西方便用如:DataTable,DataView,DataRow,DataColumn,DataRelation,Constraint一大堆的好東西,在以后的日志中會提到!
可見,在分層的時候,我們會增加一個實體層,它的作用如下:
① 將顯示數(shù)據(jù)和實際的存儲區(qū)域隔離,保證了業(yè)務(wù)的獨立性,提高了可重用性。
② 在業(yè)務(wù)層和表現(xiàn)層之間傳遞數(shù)據(jù)。(如果沒有實體層的話,我們需要把表的每個字段作為一個參數(shù)在它們之間傳遞,如果修改的話,將需要影響到程序的各個層)
③ 提供更大的可收縮性。
2) 業(yè)務(wù)實體層的幾種選擇方案及其優(yōu)缺點。
在.NET環(huán)境下實現(xiàn)業(yè)務(wù)實體有下面的幾種選擇:
① DataReader BE 具有最快的讀取速度,用于只讀的場合,不具有OO的概念。
② XML BE 可以與XML Reader和DataSet轉(zhuǎn)換。缺點:性能低,驗證、解析、顯示、排序等都很復(fù)雜。
③ Generic DataSet BE 優(yōu)點:數(shù)據(jù)綁定等。缺點:客戶端必須通過集合來獲取數(shù)據(jù),沒有類型,實例化開銷大,調(diào)度性能低。
④ Typed DataSet BE 優(yōu)點:由類型,可以進行類型檢查。缺點:只能從DataSet繼承,部署不方便,可擴展性差,實例化開銷大,調(diào)度性能低。
⑤ Custom BE 優(yōu)點:性能調(diào)優(yōu),代碼更具有可讀性,用自定義實體類定義一個良好的接口,將復(fù)雜問題隱藏在其中。缺點:設(shè)計開發(fā)都很復(fù)雜,需要自己去實現(xiàn)CURD操作,自己去實現(xiàn)數(shù)據(jù)綁定,工作量很大。
⑥ O/R Mapping的實現(xiàn) 它具有自定義類的所有優(yōu)點,同時實現(xiàn)了CRUD,數(shù)據(jù)綁定等操作。
關(guān)于ObjectSpaces 和
llblgen http://www.llblgen.com/defaultgeneric.aspxhttp://www.sinzy.net/blog/Read.asp?ID=44&BID=931http://www.csdn.net/develop/author/NetAuthor/sun2bin/