建立ADO.NET應(yīng)用程序使用技巧
社區(qū)對(duì)于ADO.NET應(yīng)用程序和LINQ to SQL的***不滿,就是它不支持更改跟蹤。但只有在你連接到上下文對(duì)象的時(shí)候,你才可以修改對(duì)象并把它們保存回?cái)?shù)據(jù)庫(kù)。就像數(shù)據(jù)庫(kù)連接那樣應(yīng)該非???,一 旦該上下文對(duì)象超出范圍,數(shù)據(jù)對(duì)象實(shí)質(zhì)上就進(jìn)入只讀狀態(tài)。重新附加它們到新上下文來回寫它們的更改,這并不是一個(gè)好辦法。
微軟拒絕解決該難題。他們沒有像大多數(shù)ORM庫(kù)那樣,在數(shù)據(jù)對(duì)象內(nèi)部添加更改跟蹤,改為更加關(guān)注POCO或者“簡(jiǎn)單初始C#對(duì)象”。
在Entity Framework設(shè)計(jì)博客上, 微軟的三位開發(fā)人員概括了一些流行的數(shù)據(jù)庫(kù)訪問方法。***個(gè)是ADO.NET應(yīng)用程序 DataSet,它能夠回寫更改的集合到數(shù)據(jù)庫(kù)。他們列出了使用ADO.NET應(yīng)用程序數(shù)據(jù)集的四個(gè)“問題”,但都意義不大。它們都集中在通過不可信邊界發(fā)送更改 集合,也并沒有太大意義。數(shù)據(jù)集訪問和ORM庫(kù)用來凈化數(shù)據(jù),而這本該應(yīng)用程序自己來處理。
下一個(gè)是DTO或數(shù)據(jù)傳輸對(duì)象。這僅是一種理想的說法,“我們先把所有數(shù)據(jù)放置在某些對(duì)象中,然后你來處理它?!边@與最近的討論并不相關(guān),但確實(shí)說明了他們的想法。
該話題接著簡(jiǎn)單地提到REST?,F(xiàn)在,我們知道Entity Framework團(tuán)隊(duì)已經(jīng)完全忘記自己應(yīng)該建立什么。至于他們所說的“目標(biāo)”,隨著對(duì)Entity Framework進(jìn)行N層改進(jìn),我們想解決一些相同的問題空間,例如數(shù)據(jù)集,ADO.NET應(yīng)用程序但要避開它一些主要問題。#t#
理論上,我們偏向于提供用于構(gòu)建的模塊,它正吸引開發(fā)人員在廣泛的架構(gòu)之上建立解決方案。例如,我們要給DTO支持者提供完善的控件,同時(shí)降低在解決簡(jiǎn)單方案時(shí)所承受的痛苦。
現(xiàn)在問題已相當(dāng)明了:Entity Framework不想成為另一個(gè)ORM,ADO.NET想成為每個(gè)人所需的一切。就像我們一次又一次看到的那樣,這種方法不會(huì)讓人滿意??匆幌略搱F(tuán)隊(duì)的聲明,除了這兩點(diǎn),針對(duì)圖像中做變更的問題,還有一些更有趣的通用表示法,但一般來說,它們有著相同的缺點(diǎn):給它們提供解決方案并不能授權(quán)給用戶控制的級(jí)別,這也是最復(fù)雜的解決方案和最成熟的模式所必須的。 
接著,
ADO.NET應(yīng)用程序中所描述的更改集合,Entity Framework并無定義自己獨(dú)特的表示法。換言之,它提供基本的構(gòu)建模塊API,這將促進(jìn)表示法的廣泛使用。















 
 
 
 
 
 
 