數(shù)據(jù)作為軟件的重要組成部份,它的存儲和傳遞是每一個(gè)軟件必須斟酌的事情。EF作為web利用程序開發(fā)進(jìn)程中經(jīng)常使用的數(shù)據(jù)處理解決方案,它是如何工作的,它的特點(diǎn)是甚么?本文就此做個(gè)簡單介紹。
最開始的時(shí)候,數(shù)據(jù)量比較小,并且沒有觸及到數(shù)據(jù)庫,我們使用變量作為載體,保存和傳遞數(shù)據(jù),使用作用域的方式來界定變量的作用范圍;這類方式的壞處就是,每一個(gè)數(shù)據(jù)都需要1個(gè)變量,并且我們需要了解每一個(gè)變量的作用域才能正確的使用它們。
接觸到數(shù)據(jù)庫以后,變量已不能滿足大批量數(shù)據(jù)的存儲和傳遞,這時(shí)候候DataTable表和實(shí)體出現(xiàn)了,我們將數(shù)據(jù)庫的內(nèi)容存儲在實(shí)體中,在分層的軟件中,這類結(jié)構(gòu)的便捷性特別明顯,只需要在用到實(shí)體的那1層援用實(shí)體層便可,非常簡單。
3層數(shù)據(jù)傳遞示意圖:
在web的利用程序開發(fā)中,不可避免的要使用各種模式或框架,單1的實(shí)體層不復(fù)存在了,這時(shí)候候就需要引入1種新的數(shù)據(jù)交換方式。基于ORM的EF解決方案應(yīng)運(yùn)而生。
ORM(Object RelationMapping)對象關(guān)系映照,它解決了面向?qū)ο蠛?a href="http://www.vxbq.cn/db/" target="_blank">數(shù)據(jù)庫不匹配的問題。
EF(Entity Framework)實(shí)體框架,它可以在代碼中將關(guān)系型數(shù)據(jù)庫轉(zhuǎn)換為類的情勢,方便程序員的操作。
EF的工作方式:EF將數(shù)據(jù)庫對象轉(zhuǎn)換成了實(shí)體對象,將數(shù)據(jù)表字段轉(zhuǎn)換成了屬性,將數(shù)據(jù)表的關(guān)系轉(zhuǎn)換成了結(jié)合屬性,這樣數(shù)據(jù)庫的E/R模型將完全的對應(yīng)對象模型,程序員可以用操作1般類的方式方便的操作數(shù)據(jù)庫。
EF工作方式示意圖:
類似于3層的劃分,EF也將對象模型分為了3層,分別是概念層,對應(yīng)層,存儲層。概念層定義了對象模型,利用程序可以以對象的方式訪問數(shù)據(jù);存儲層負(fù)責(zé)與數(shù)據(jù)庫管理系統(tǒng)做實(shí)體對應(yīng),讓數(shù)據(jù)正確的寫入和讀取;對應(yīng)層負(fù)責(zé)將概念層和存儲層聯(lián)系在1起,以確保數(shù)據(jù)正確的輸入和輸出。
EF的3種模式 那末實(shí)體對象或?qū)嶓w類在代碼中究竟以何種方式存在呢,它是model下的1個(gè).edmx類。創(chuàng)建這個(gè)類有3種方式,分別是CodeFirst、ModelFirst和DBfirst。CodeFirst就是,先創(chuàng)建實(shí)體,然后映照產(chǎn)生數(shù)據(jù)庫,ModelFirst是先創(chuàng)建數(shù)據(jù)模型,然后生成代碼數(shù)據(jù)庫,DBfirst是先創(chuàng)建數(shù)據(jù)庫,然后創(chuàng)建實(shí)體。
下面以DBFirst為例,演示在mvc中EF的創(chuàng)建進(jìn)程(C#)。
1 創(chuàng)建數(shù)據(jù)庫(略)
2 創(chuàng)建1個(gè)mvc架構(gòu)(略)
3 在model層添加1個(gè)新建項(xiàng)(略)
4 選擇ADO.NET實(shí)體數(shù)據(jù)模型
5 新建連接
服務(wù)器需要選擇或填寫數(shù)據(jù)庫服務(wù)器所在的IP地址,選擇需要使用的數(shù)據(jù)庫。
6 選擇EF模型
這里提供了的DBfirst和CodeFirst,沒有ModelFirst。
7 最后選擇需要添加的數(shù)據(jù)表、視圖等。
對象模型的創(chuàng)建已完成,下1篇博客將會(huì)描寫對象結(jié)構(gòu)和如何使用。