EF框架學習


什么是Entity Framework                                                            

學習EF的前提:熟練使用Linq和Ado.net,因為在使用EF框架進行開發時,我們大多數情況使用Linq進行查詢和操作,而EF的底層實現用的是Ado.net

1.EF的概念                                                                                      

在.NET3.5之前,我們經常編寫ADO.NET代碼或企業數據訪問塊來保存或檢索底層數據庫中的數據。做法是:打開過一個數據庫的連接,創建一個DataSet來獲取或提交數據到數據庫,通過將DataSet中的數據和.NET對象相互轉換來滿足業務需求。這是一個麻煩且容易出錯的過程Microsoft提供了“Entity Framework”框架,用於自動地執行所有上述與數據庫相關的活動。
EF是一個適用於.NET開發的開源ORM框架。它使開發人員能夠通過領域對象來處理數據,而無需關注存儲此數據的基礎數據庫。使用實體框架,開發人員在處理數據時可以在更高的抽象級別上工作,並且與傳統應用程序相比,可以使用更少的代碼創建和維護面向數據的應用程序。
官方定義:“實體框架是一種對象關系映射器(O/RM),它使.NET開發人員能夠通過.NET對象來操作數據庫。它消除了開發人員通常需要編寫的大多數數據訪問代碼的需求。“

實體框架工作在業務實體(域類)和數據庫之間。它保存實體屬性中的數據到數據庫,也可以從數據庫中檢索數據並自動將其轉換為實體對象。

2.EF功能匯總                                                                                   

這里簡單地總結EF的特性,以后詳細總結

復制代碼
1.跨平台   EF Core是一個跨平台的框架,可以在Windows,Linux和Mac上運行。
2.建模     EF可以創建具有不同數據類型get / set屬性的EDM(Entity Data Model/實體數據模型)。它使用此模型查詢或保存底層數據庫的數據。
3.查詢     EF允許我們使用LINQ從底層數據庫中檢索數據,同時也支持直接對數據庫執行原始SQL查詢。
4.更改跟蹤  EF會跟蹤需要提交到數據庫的實體實例(屬性值)發生的更改。
5.保存     EF調用SaveChanges()方法時,根據實體發生的更改,對數據庫執行INSERT,UPDATE和DELETE命令。EF還提供了異步的SaveChangesAsync()方法。
6.並發     默認情況下,從數據是從數據庫中提取開始,EF使用樂觀並發來避免我們做的修改被其他用戶覆蓋。
7.事務     EF在查詢或保存數據時自動執行事務管理。它還提供自定義事務管理的選項。
8.緩存     EF包括開箱即用的第一級緩存。因此,重復查詢將從緩存中返回數據,而不是訪問數據庫。
9.配置     EF允許我們使用注釋屬性配置EF模型,也可以使用Fluent API來覆蓋默認約定。
10.遷移    EF提供了一組遷移命令,我們可以在NuGet Package Manager控制台或命令行界面中執行這些命令來創建或管理底層數據庫計划。
復制代碼

 

 

3.EF組成                                                                                      

下圖很好地說明了EF的基本組成:

 

EF的組成簡單總結如下:

  1、EDM(實體數據模型): EDM包含三個主要部分——概念模型,映射和存儲模型。

    概念模型(entity): 概念模型包含了模型類和它們之間的關系。 這將是獨立於數據庫表設計。

    存儲模型(data): 存儲模型是數據庫設計模型,包括表、視圖、存儲過程、以及它們之間的關系和鑰匙。

    映射(mapping): 映射由概念模型如何映射到存儲模型的信息組成。

  2、LINQ To Entity(L2E): L2E是一種的查詢實體對象的語言, 它返回在概念模型中定義的實體。 

  3、Entity SQL: Entity SQL是一個類似於L2E的查詢語言。 然而,它比L2E更加復雜。

  4、Object Services(對象服務):對象服務是訪問數據庫中的數據並返回數據的主要入口點。它負責數據實例化,把Entity Client Data Provider(下一層)的數據轉換成實體對象。

  5、Entity Client Data Provider:主要職責是將L2E或Entity Sql轉換成數據庫可以識別的Sql查詢語句,它通過ADO.Net Data Provider向數據庫發送或者索取數據。

  6、ADO.Net Data Provider:使用標准的Ado.net與數據庫通信。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM