全系列ADO.NET Entity Framework結(jié)構(gòu)使用說明
本文主要講述ADO.NET Entity Framework相關(guān)技巧和運用,怎樣創(chuàng)建ADO.NET Entity Framework的使用說明。這些內(nèi)容都是一些門戶網(wǎng)站和技術(shù)論壇找到的,中間可能有不少錯誤是我沒有挑出的,歡迎大家指正。
長久以來,程序設(shè)計師和數(shù)據(jù)庫總是保持著一種微妙的關(guān)系,在商用應(yīng)用程序中,數(shù)據(jù)庫一定是不可或缺的元件,這讓程序設(shè)計師一定要為了連接與訪問數(shù)據(jù)庫而去學(xué)習 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相當類似,然而ObjectSpace工程相當大,在.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)成對象模型。#t#
如此讓程序設(shè)計師能用最熟悉的編程語言來調(diào)用訪問。而在抽象化的結(jié)構(gòu)之下,則是高度集成與對應(yīng)結(jié)構(gòu)的概念層、對應(yīng)層和儲存層,以 及支持 Entity Framework 的數(shù)據(jù)提供者 (provider),讓數(shù)據(jù)訪問的工作得以順利與完整的進行。
(1) 概念層:負責向上的對象與屬性顯露與訪問。
(2) 對應(yīng)層:將上方的概念層和底下的儲存層的數(shù)據(jù)結(jié)構(gòu)對應(yīng)在一起。
(3) 儲存層:依不同數(shù)據(jù)庫與數(shù)據(jù)結(jié)構(gòu),而顯露出實體的數(shù)據(jù)結(jié)構(gòu)體,和 Provider 一起,負責實際對數(shù)據(jù)庫的訪問和 SQL 的產(chǎn)生。
ADO.NET Entity Framework 以 Entity Data Model (EDM) 為主,將數(shù)據(jù)邏輯層切分為三塊,分別為 Conceptual Schema, Mapping Schema 與 Storage Schema 三層,其上還有 Entity Client,Object Context 以及 LINQ 可以使用。