ADO.NET Entity Framework 是什么?是微軟發(fā)布的一個對象-關(guān)系映射框架,大家都知道JAVA里有一個很有名的組合開發(fā)叫SSH,微軟也打造了類似的SSH模式,在VS2008 SP1。微軟集合了兩樣比較重要的東西,一個是ASP.NET MVC 另外一個就是ADO.NET Entity Framework ,習(xí)慣上喜歡叫EF。貌似。。還少一個SPRING就完成了微軟版本的SSH了。當(dāng)然只是感覺上的相似,這個東西跟SSH完全是兩會事。
??????ADO.NET Entity Framework是建立在LINQ的基礎(chǔ)上的。提供了從關(guān)系數(shù)據(jù)庫模式到對象的映射。在過去,我們開發(fā)的時候,都會先把這些關(guān)系數(shù)據(jù)庫里的表,構(gòu)建對象。過去哦那種開發(fā)模式,我想大家都不陌生了,三層架構(gòu)里,這個東西是最常用的,而且現(xiàn)在網(wǎng)上也有很多類似的軟件,生成數(shù)據(jù)庫表對象代碼。只是不知道那個公司把ADO.NET Entity Framework投入了實際開發(fā)中,在我初步的試用過程中,我覺得ADO.NET Entity Framework的確能幫我們提高開發(fā)速度。但是也有缺陷。就是更新太快,很難投入實際運作,就算是LING現(xiàn)在用的 公司也并不多,大部分都還是停留在2.0時代。真正要實現(xiàn)普及難度不是一般的大,1.1到2.0花了2年多才勉強普及,還是在1。1有重大不足的前提下,現(xiàn)在2。0已經(jīng)相對問題,要這些公司更新你到3.5難度還不小啊,至少國內(nèi)是這樣。貌似我還沒有資格評論這些。。。因為太年輕。
??? ADO.NET Entity Framework需要定義三層,分別是:邏輯層,概念層,映射層。如果是直接用VS的導(dǎo)航做,這些很方便,但是導(dǎo)航永遠不能滿足復(fù)雜的現(xiàn)實,所以我們還是需要自己動手去一步一步的做,當(dāng)然,如果想先入門一下,可以用導(dǎo)航去感受一下。其實我也是在學(xué)習(xí)階段,個人感覺貌似.NET的布局有點像向SSH的方向靠攏,突然看到SP1有這么大的整合感覺到。。。貌似.NET會有大動作。
--------------------------------------------------------背景------來自百度知道---------------------------------------
??????? 長久以來,程序設(shè)計師和數(shù)據(jù)庫總是保持著一種微妙的關(guān)系,在商用應(yīng)用程序中,數(shù)據(jù)庫一定是不可或缺的元件,這讓程序設(shè)計師一定要為了連接與訪問數(shù)據(jù)庫而去學(xué)習(xí)
SQL 指令,因此在信息業(yè)中有很多人都在研究如何將程序設(shè)計模型和數(shù)據(jù)庫集成在一起,對象關(guān)系對應(yīng) (Object-Relational Mapping) 的技術(shù)就是由此而生,像
Hibernate或
NHibernate都是這個技術(shù)下的產(chǎn)物,而微軟雖然有了
ADO.NET這 個數(shù)據(jù)訪問的利器,但卻沒有像NHibernate這樣的對象對應(yīng)工具,因此微軟在.NET Framework 2.0發(fā)展時期,就提出了一個ObjectSpace的概念,ObjectSpace可以讓應(yīng)用程序可以用完全對象化的方法連接與訪問數(shù)據(jù)庫,其技術(shù)概念 與NHibernate相當(dāng)類似,然而ObjectSpace工程相當(dāng)大,在.NET Framework 2.0完成時仍無法全部完成,因此微軟將ObjectSpace納入下一版本的.NET Framework中,并且再加上一個設(shè)計的工具(Designer),構(gòu)成了現(xiàn)在的 ADO.NET Entity Framework。
Entity Framework 利用了抽象化數(shù)據(jù)結(jié)構(gòu)的方式,將每個數(shù)據(jù)庫對象都轉(zhuǎn)換成應(yīng)用程序?qū)ο?(entity),而數(shù)據(jù)字段都轉(zhuǎn)換為屬性 (property),關(guān)系則轉(zhuǎn)換為結(jié)合屬性 (association),讓數(shù)據(jù)庫的 E/R 模型完全的轉(zhuǎn)成對象模型,如此讓程序設(shè)計師能用最熟悉的編程語言來調(diào)用訪問。而在抽象化的結(jié)構(gòu)之下,則是高度集成與對應(yīng)結(jié)構(gòu)的概念層、對應(yīng)層和儲存層,以 及支持 Entity Framework 的數(shù)據(jù)提供者 (provider),讓數(shù)據(jù)訪問的工作得以順利與完整的進行。
(1) 概念層:負責(zé)向上的對象與屬性顯露與訪問。
(2) 對應(yīng)層:將上方的概念層和底下的儲存層的數(shù)據(jù)結(jié)構(gòu)對應(yīng)在一起。
(3) 儲存層:依不同數(shù)據(jù)庫與數(shù)據(jù)結(jié)構(gòu),而顯露出實體的數(shù)據(jù)結(jié)構(gòu)體,和 Provider 一起,負責(zé)實際對數(shù)據(jù)庫的訪問和 SQL 的產(chǎn)生。
posted on 2009-06-22 21:52
^喬喬^ 閱讀(2552)
評論(2) 編輯 收藏 引用 所屬分類:
c#