[實體框架編程]第一章 ADO.NET實體框架簡介(上)

第一章 ADO.NET實體框架簡介數據庫

在微軟2009年11月份的專業開發者大會上,那位傳說中的微軟卓越工程師Don Box(丹•博克斯)曾說過,「若是你是名.net開發人員,那麼實體框架就是你的目的地。咱們來了。趕忙上船吧,×××。」編程

不錯,時候到了。後端

開發人員耗費了大量寶貴時間考慮他們的後端數據庫、表以及他們的關係、存儲過程的名字和參數、視圖以及他們返回的數據的模式定義。對.net開發人員來講,微軟全新的實體框架改變了這種遊戲規則,你書寫程序時沒必要再關係數據存儲的細節。你能夠把精力所有放在程序書寫的任務上而不是數據的訪問。app

ADO.NET實體框架已經進而轉變成爲構建.net應用程序的核心數據訪問平臺。微軟在TeachEd 2006大會上宣佈了實體框架,時隔2年以後,它做爲Visual Studio 2008 sp1和.NET 3.5 sp1的部分一同發佈.做爲版本1的產品,實體框架一開始獲得的是質疑,遠沒有大範圍被採用。然而,隨着2010年4月的Visual Studio 2010和.NET 4的發佈,大大改進的實體框架最終贏得了關注,在廣大開發人員和.NET團隊中引發極大的反響,這幫傢伙迅速跳上了甲板。框架

 

儘管ADO.NET保留着已有的數據訪問技術,然而微軟的核心數據訪問技術朝着實體框架發展的戰略部署將會從商業平臺開發部門(擁有着微軟的所有數據編程任務)吸入大量的創新和資源。對微軟來講這是門很重要的技術,因此你不該當忽視。實體框架也正慢慢地被集成到了微軟的衆多產品中,不管是該產品使用了實體框架來支持本身的特性好比Commerce Server 2009裏的多通道貿易基礎,仍是該產品支持與實體框架的交互好比說SQL Server建模。ide


然而咱們爲何要一個全新的數據訪問技術?在迫使了開發人員從一種數據訪問技術切換到另外一種的技術(從DAO到RDO,再到ADO,以及到ADO.NET的轉變)以後,到了ADO.NET微軟貌似已經固定下來一個開發人員能夠投入的工具了。伴隨每一次的Visual Studio和.NET框架的發佈,ADO.NET都已經加強了而且加入了新特性,但卻一直保持向後兼容性。咱們的投入一直很保險。
工具


儘管如此,但它終將停滯。實體框架是ADO.NET的另外一個加強,給了開發人員除DataReaqders和DataSet之外新的訪問數據和操縱結果的機制。
spa


可是微軟已經作了DataSet所力所能及的事情。下一步就應該使開發人員關注於領域模型而由.NET自動幫你作那些苦逼的數據庫交互工做。
.net

 

在本章你將會接觸到實體框架的關鍵部分:實體數據模型、實體類、核心.NET API以及Visual Studio設計工具。再者,你也能瞭解實體框架是如何與ADO.NET的DataSet和LINQ to SQL配合工做的。最後,你還能獲知不少的Visual Studio 2010和.NET 4中實體框架的改動和增長的部分,以及版本1中的那麼多的痛點是如何消除的。設計

實體關係模型:針對模型編程而不是數據庫

實體框架一個主要的好處就是你沒必要再關注數據庫的結構細節了。全部的數據訪問與存儲都是針對的概念模型,它反映的是你的業務對象。

 

在使用ADO.NETDataReader和不少其它的數據訪問技術時,你要花費大量時間用來寫代碼從數據庫裏獲取數據、讀取結果集並拾取你想要的數據,並把它們放入你的業務類。使用了實體框架,你再也不是查詢數據模式而是反映你業務模型的模式。當檢索數據時,你沒必要被迫合理組織行與列並把它們放到對象裏,由於它們返回的就是對象。當要把所作修改存回數據庫時,你只須要保存這些對象就能夠。實體框架作必要的工做把你的對象再轉換成相關存儲的行與列。實體框架所作的這些工做,正和對象關係映射(ORM)工具工做方式很類似。實體框架使用一個被稱做實體數據模型(EDM)的模型,它是由實體關係建模(ERM)演化而來,ERM概念在數據庫開發領域使用了不少年。

 

--------------------------------------------------------------------------

實體數據模型的根源

微軟的實體框架從實體關係建模(ERM)方法演變而來,ERM已經在白板上畫了有30多年了(?沒大明白)。ERM定義了實體的模式以及彼此的關聯。實體不一樣於對象,它們定義的是對象的模式而不是行爲。因此說,實體有的相似於你數據庫裏的表模式,不一樣的是它描述的是業務對象的模式。開發人員繪製那麼多年的ERM無非爲了可以搞清如何把數據庫結構化的表數據轉換成程序所使用的業務對象。

提及ERM不得不提一提陳品山博士(Dr. Peter Chen),他在1976年發表的論文《The Entity-Relationship Model--Toward a Unified View of Data》被認爲是第一個有關ERM的權威性著做。(http://csc.lsu.edu/news/erd.pdf)

擁有衆多數據庫專家的隊伍的Mircosoft Research開始設計一種方法但願可以自動在概念模型與數據庫模式之間架起一座橋樑。須要是一個雙向通道讓開發人員既可以從數據庫檢索數據、填充實體又能夠把修改存回數據庫。

2006年6月,Microsoft Research發表它的第一篇關於EDM的論文,做爲對ERM的迴應。這篇論文的做者包括數據庫奇才Jim Gary,然而不幸的是他2007年在舊金山外海失蹤。

--------------------------------------------------------------------------

實體數據模型:客戶端的數據模型

實體數據模型(EDM)是一個客戶端的數據模型,它是實體框架的核心。數據庫模型隸屬於數據庫,這點EDM與之不一樣。程序中的數據模型描述的是你業務對象的結構。就比如是給了你重構企業數據庫表和視圖的權限,使得這些表與關係看上去更像你的業務領域而不是數據庫管理人員設計的規範模式。

 

1-1 規範化的數據庫表模式

1-1顯示了在一個數據庫中的一個典型的表集的模式。數據庫管理員出於規模考慮選擇了把Person放入一個單獨的表中,而由PersonDetails提供了一個Person的額外信息。SalesPerson表用來提供銷售人員的額外信息。

爲了能訪問Person記錄的這些額外數據,程序裏須要用到全內鏈接與外鏈接進行查詢。不然就得訪問一系列的預約義的存儲過程與視圖,每一個可能須要不一樣的參數,而且返回值還得采用不一樣方式構造。

爲了檢索一個SalesPerson記錄集以及他們各自的詳細信息的T-SQL查詢語句可能有點相似這樣:

 

設想有某個程序可能但願數據庫看起來和它本身的一個視圖那樣。圖1-2重構了該模式.

 


1-2 爲了匹配你的業務對象改造後的Person數據

相關文章
相關標籤/搜索