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