專家簡(jiǎn)介ADO.NET Entity Framework對(duì)象關(guān)系
ADO.NET Entity Framework作為一個(gè)高效的.NET程序語(yǔ)言。其混合了函數(shù)語(yǔ)言和物件導(dǎo)向程序編制語(yǔ)言,并且完美的適用于編程、算法、技術(shù)和探索性開(kāi)發(fā),因此可以在使用的過(guò)程當(dāng)中感受到趣味性和吸引力。
長(zhǎng)久以來(lái),程序設(shè)計(jì)師和數(shù)據(jù)庫(kù)總是保持著一種微妙的關(guān)系,在商用應(yīng)用程序中,數(shù)據(jù)庫(kù)一定是不可或缺的元件,這讓程序設(shè)計(jì)師一定要為了連接與訪問(wèn)數(shù)據(jù)庫(kù)而去學(xué)習(xí) SQL 指令,因此在信息業(yè)中有很多人都在研究如何將程序設(shè)計(jì)模型和數(shù)據(jù)庫(kù)集成在一起,
對(duì)象關(guān)系對(duì)應(yīng) (Object-Relational Mapping) 的技術(shù)就是由此而生,像Hibernate或NHibernate都是這個(gè)技術(shù)下的產(chǎn)物,ADO.NET Entity Framework而微軟雖然有了ADO.NET這 個(gè)數(shù)據(jù)訪問(wèn)的利器,但卻沒(méi)有像NHibernate這樣的對(duì)象對(duì)應(yīng)工具,因此微軟在.NET Framework 2.0發(fā)展時(shí)期。
就提出了一個(gè)ObjectSpace的概念,ObjectSpace可以讓應(yīng)用程序可以用完全對(duì)象化的方法連接與訪問(wèn)數(shù)據(jù)庫(kù),其技術(shù)概念 與NHibernate相當(dāng)類似,然而ObjectSpace工程相當(dāng)大,在.NET Framework 2.0完成時(shí)仍無(wú)法全部完成,因此微軟將ObjectSpace納入下一版本的.NET Framework中,并且再加上一個(gè)設(shè)計(jì)的工具(Designer),構(gòu)成了現(xiàn)在的 ADO.NET Entity Framework。
Entity Framework 利用了抽象化數(shù)據(jù)結(jié)構(gòu)的方式,將每個(gè)數(shù)據(jù)庫(kù)對(duì)象都轉(zhuǎn)換成應(yīng)用程序?qū)ο?(entity),而數(shù)據(jù)字段都轉(zhuǎn)換為屬性 (property),關(guān)系則轉(zhuǎn)換為結(jié)合屬性 (association),讓數(shù)據(jù)庫(kù)的 E/R 模型完全的轉(zhuǎn)成對(duì)象模型,如此讓程序設(shè)計(jì)師能用最熟悉的編程語(yǔ)言來(lái)調(diào)用訪問(wèn)。而在抽象化的結(jié)構(gòu)之下,則是高度集成與對(duì)應(yīng)結(jié)構(gòu)的概念層、對(duì)應(yīng)層和儲(chǔ)存層,以 及支持 Entity Framework 的數(shù)據(jù)提供者 (provider),讓數(shù)據(jù)訪問(wèn)的工作得以順利與完整的進(jìn)行。#t#
(1)概念層:負(fù)責(zé)向上的對(duì)象與屬性顯露與訪問(wèn)。
(2) 對(duì)應(yīng)層:將上方的概念層和底下的儲(chǔ)存層的數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)在一起。
(3) 儲(chǔ)存層:依不同數(shù)據(jù)庫(kù)與數(shù)據(jù)結(jié)構(gòu),而顯露出實(shí)體的數(shù)據(jù)結(jié)構(gòu)體,和 Provider 一起,負(fù)責(zé)實(shí)際對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)和 SQL 的產(chǎn)生。
ADO.NET Entity Framework 是微軟以 ADO.NET 為基礎(chǔ)所發(fā)展出來(lái)的對(duì)象關(guān)系對(duì)應(yīng) (O/R Mapping) 解決方案,早期被稱為 ObjectSpace,現(xiàn)已經(jīng)包含在 Visual Studio 2008 Service Pack 1 以及 .NET Framework 3.5 Service Pack 1 中發(fā)表。
ADO.NET Entity Framework 以 Entity Data Model (EDM) 為主,將數(shù)據(jù)邏輯層切分為三塊,分別為 Conceptual Schema, Mapping Schema 與 Storage Schema 三層,其上還有 Entity Client,Object Context 以及 LINQ 可以使用。