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