王志丹
摘 要:Entity Framework技術(shù)因?yàn)榫哂惺褂渺`活、開發(fā)周期短等優(yōu)點(diǎn),所以,被廣泛應(yīng)用于.NET平臺(tái)的開發(fā)中?;贓ntity Framework胡框架能設(shè)計(jì)出經(jīng)典MVC架構(gòu)中的數(shù)據(jù)庫訪問層,在此介紹了不同的數(shù)據(jù)庫訪問方式的特點(diǎn)。
關(guān)鍵詞:數(shù)據(jù)庫;模型;代碼;Entity Framework技術(shù)
中圖分類號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.15913/j.cnki.kjycx.2016.01.076
Entity Framework實(shí)體框架是一種對(duì)象關(guān)系映射機(jī)制(ORM),它以Entity Data Model(EDM)為主,利用抽象化的數(shù)據(jù)結(jié)構(gòu)將數(shù)據(jù)庫對(duì)象轉(zhuǎn)換為應(yīng)用程序?qū)ο?,將庫表字段轉(zhuǎn)換為屬性,關(guān)系轉(zhuǎn)換為關(guān)聯(lián)系統(tǒng),把數(shù)據(jù)庫的E/R 模型轉(zhuǎn)換成對(duì)象模型,讓開發(fā)人員利用概念應(yīng)用程序模型編程,進(jìn)而創(chuàng)建數(shù)據(jù)訪問應(yīng)用程序,以減少數(shù)據(jù)應(yīng)用程序的開發(fā)量和系統(tǒng)維護(hù)的工作量。
1 訪問方式
訪問Entity Framework數(shù)據(jù)庫的方式有3種,不同類型的數(shù)據(jù)訪問方式如圖1所示。
1.1 數(shù)據(jù)庫優(yōu)先(Database First)
數(shù)據(jù)庫優(yōu)先是比較傳統(tǒng)的開發(fā)方法。采取這種方法時(shí),要先創(chuàng)建數(shù)據(jù)庫,一般直接應(yīng)用SQL SERVER等數(shù)據(jù)庫工具,然后利用Visual Studio等開發(fā)工具為其創(chuàng)建相對(duì)應(yīng)的實(shí)體類。另外,要事先指定數(shù)據(jù)庫對(duì)象與實(shí)體類的匹配關(guān)系和映射,手動(dòng)修改這些自動(dòng)生成的代碼和匹配文件。當(dāng)已經(jīng)有一個(gè)數(shù)據(jù)庫時(shí),這種方法就很簡(jiǎn)單了,只需指定好原數(shù)據(jù)庫與即將用到的實(shí)體對(duì)應(yīng)的匹配關(guān)系。這樣Entity Framework就可以自動(dòng)生成數(shù)據(jù)模型,而且其中包含對(duì)應(yīng)的類和屬性。這些類和屬性與現(xiàn)存的數(shù)據(jù)庫中的表和字段相對(duì)應(yīng)。所有關(guān)于數(shù)據(jù)庫結(jié)構(gòu)、數(shù)據(jù)模型和它們之間的映射關(guān)系都儲(chǔ)存在XML文件中,由Visual Studio提供Entity Framework設(shè)計(jì)器,以圖形的形式讓使用者查閱和編輯XML文件。
1.2 模型優(yōu)先(Model First)
這種方式是先利用某些工具(比如Visual Studio的Entity Framework設(shè)計(jì)器)設(shè)計(jì)出實(shí)體數(shù)據(jù)模型和它們之間的關(guān)系,然后再根據(jù)這些實(shí)體和關(guān)系生成數(shù)據(jù)庫對(duì)象和相關(guān)代碼文件。
當(dāng)沒有現(xiàn)存的數(shù)據(jù)庫時(shí),就可以使用該設(shè)計(jì)器;當(dāng)已經(jīng)有設(shè)計(jì)好的數(shù)據(jù)模型時(shí),設(shè)計(jì)器會(huì)自動(dòng)生成DDL(data definition language)來創(chuàng)建數(shù)據(jù)庫。這種方法同樣也使用XML文件儲(chǔ)存數(shù)據(jù)模型、數(shù)據(jù)庫結(jié)構(gòu)和映射信息等。
1.3 代碼優(yōu)先(Code Fist)
該方式與模型優(yōu)先比較相似。在開發(fā)ASP.NET MVC應(yīng)用程序時(shí),是先創(chuàng)建數(shù)據(jù)庫,然后通過編寫代碼來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問。雖然這種開發(fā)模式已得到了廣泛應(yīng)用,但它也存在性能差、效率低等缺點(diǎn)。隨著ASP.NET Entity Framework的發(fā)布,推出了代碼優(yōu)先的新開發(fā)模式,它可以從代碼入手實(shí)現(xiàn)數(shù)據(jù)庫的應(yīng)用和開發(fā)。采用這種方式時(shí),需要先編寫一些代碼,比如實(shí)體對(duì)象、數(shù)據(jù)庫關(guān)系等,然后根據(jù)已有的代碼描述自動(dòng)創(chuàng)建數(shù)據(jù)庫對(duì)象。自己寫代碼實(shí)際就是用代碼編寫模型實(shí)體,不管有沒有現(xiàn)成的數(shù)據(jù)庫,都可以通過編寫代碼來定義數(shù)據(jù)的類和屬性,與數(shù)據(jù)庫中的表和字段相對(duì)應(yīng),而且也不需要利用XML文件建立Entity Framework。這種方法又被稱為Code Only,體現(xiàn)了編寫代碼在該方法中的重要性。位于物理數(shù)據(jù)庫與概念數(shù)據(jù)庫之間關(guān)系的映射已經(jīng)由編寫的代碼指定,并由對(duì)應(yīng)的API完成,如果沒有對(duì)應(yīng)現(xiàn)存的數(shù)據(jù)庫,Entity Framework能夠自動(dòng)創(chuàng)建一個(gè)數(shù)據(jù)庫。當(dāng)數(shù)據(jù)模型改變時(shí),Entity Framework也能對(duì)應(yīng)地修改數(shù)據(jù)庫或者重建數(shù)據(jù)庫。
2 結(jié)束語
本文簡(jiǎn)要介紹了Entity Framework不同類型的數(shù)據(jù)訪問方式——DataBase First是最早也是最容易上手的一種開發(fā)模式;Model First是最能體現(xiàn)“面向?qū)ο笏枷搿钡木幊棠J?;Code Fist適用于技術(shù)成熟的開發(fā)人員,它能讓代碼更整潔,易于維護(hù)。
參考文獻(xiàn)
[1]趙增敏,吳潔,唐惠康.基于Code Fist模式的ASP.NET MVC 應(yīng)用開發(fā)[J].制造業(yè)自動(dòng)化,2012,34(3).
[2]袁立國(guó),陳中育,李方鵬,等.一種軟件開發(fā)框架的設(shè)計(jì)優(yōu)化[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(5).
[3]沈霞菲,王建中.基于.NET Entity Framework數(shù)據(jù)庫訪問機(jī)制的設(shè)計(jì)與應(yīng)用[J].現(xiàn)代電子技術(shù),2014(37).
[4]謝日星.ADO.NET Entity Framework 建模技術(shù)研究[J].科技傳播,2010(11).
[5]陳永松.Entity Framework 數(shù)據(jù)訪問性能優(yōu)化的幾種方法[J].電腦開發(fā)與應(yīng)用,2014(7).
〔編輯:白潔〕