NET EF框架

EF 框架是微軟的.NET中ORM(對象關係映射)框架。

在沒有EF框架之前,我們是直接與ADO.Net 進行交互來訪問數據庫,在SqlHelper 裏面面通過設置connection ,command ,dataset,datareader等來與數據庫交互,這樣的話使得我們開發人員把很多精力放在了管理數據訪問的ADO.NET 代碼上,但是在EF 框架中把這塊代碼進行了封裝,開發人員直接通過實體類來完成對數據庫的操作。 
在EF框架中把數據庫中的關係表對應到了程序中的實體類,把數據表中的字段對應成了實體類中的屬性,這就是對象關係映射,

那爲什麼要用ORM框架呢?

EF爲我們現有的數據庫創建數據訪問類,以便我們可以直接使用這些類與數據庫交互,而不是直接與ADO.Net交互。

EF三種模式

  • DataBase First
  • Model First
  • CodeFirst

  DataBase First傳統的表驅動方式創建EDM,然後通過EDM生成模型和數據層代碼。除生成實體模型和自跟蹤實現模型,還支持生成輕型DbContext。

  Model First先創建EDM模型,再生成DDL數據庫腳本和模型和數據層代碼。除生成實體模型和自跟蹤實現模型,支持生成輕型DbContext。

  Code First手動創建POCO模型,數據層DbContext及映射關係,通過Database.SetInitializer生成數據庫,這種方式較靈活,但是代碼工作較多。

EF 框架詳解:

實體框架整體架構: 
這裏寫圖片描述

架構組件: 
EDM(實體數據模型): EDM由三個主要部分組成 - 概念模型,映射和存儲模型。 
Conceptual Model:概念模型包含模型類及其關係。這將獨立於您的數據庫表設計。 
Storage Model:存儲模型是包括表,視圖,存儲過程及其關係和密鑰的數據庫設計模型。 
Mapping:映射由有關概念模型如何映射到存儲模型的信息組成。 
LINQ to Entities: LINQ to Entities是一種用於針對對象模型編寫查詢的查詢語言。它返回在概念模型中定義的實體。你可以在這裏使用你的LINQ技能。 
Entity SQL:實體SQL是另一種查詢語言(僅適用於EF 6),就像LINQ to Entities一樣。然而,這比L2E稍微難一些,開發者需要單獨學習。 
ObjectServices:對象服務是訪問數據庫中的數據並將其返回的主要入口點。對象服務負責實現,這是將從實體客戶端數據提供者(下一層)返回的數據轉換爲實體對象結構的過程。 
Entity Client Data Provider:此層的主要職責是將LINQ-to-Entities或實體SQL查詢轉換爲底層數據庫可以理解的SQL查詢。它與ADO.Net數據提供者通信,而ADO.Net數據提供者又從數據庫發送或檢索數據。 
ADO.Net Data Provider:該層使用標準的ADO.Net與數據庫進行通信。

EF 框架如何運作: 
EF框架的功能: 
將實體類映射到數據庫模式 
將linq 查詢翻譯並執行到sql 
跟蹤實體在其生命週期內發生的變化,並將更改保存到數據庫。

實體數據模型: 
EF 的第一個功能就是建立一個實體數據模型(EDM).EDM 在上面也提到過,主要包括概念模型,存儲模型以及概念和存儲之間的映射。EF使用此EDM執行CRUD操作。它使用EDM從LINQ查詢構建SQL查詢,構建INSERT,UPDATE和DELETE命令,將數據庫結果轉換爲實體對象。

這裏寫圖片描述

查詢 
EF 使用EDM將LINQ-to-Entities查詢轉換爲關係數據庫的SQL查詢,並將結果轉換回實體對象。 
這裏寫圖片描述

保存 
當調用SaveChanges()方法時,EF根據實體的狀態推斷INSERT,UPDATE和DELETE命令。ChangeTrack跟蹤每個實體的狀態,以及何時執行任何操作。 
這裏寫圖片描述

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章