EF框架學習分享一

2021-03-09 12:01:29

一、什麼是EF框架ORM框架 ?

     EF 全稱是 EntityFramework 。Entity Framework是ADO.NET 中的一套支援開發面向資料的軟體應用程式的技術,是微軟的一個ORM框架。

    ORM框架(Object Relational Mapping) 翻譯過來就是物件關係對映。

 

 

二、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 的優勢(與 ADO.NET 的對比)

https://www.cnblogs.com/best/p/7714500.html (ADO詳解連結)

如果不用ORM框架,我們一般這樣來使用ADO.NET進行資料庫開發:

1.將ADO.NET對資料庫的操作封裝到一個類裡SqlHelper中

2.在DAL層呼叫SqlHelper

3.其他層再呼叫DAL進行資料庫操作

相對的優點

1.【邏輯】業務邏輯和資料存取邏輯分離開來;

2.【新增操作】 EF:一次連線,執行多條sql;SqlHelper裡使用一般寫法,連線又無法釋放,用using,會造成多次連線重置;

3.【更新操作】 EF自動優化,只update set 有變化的欄位,EF也可以很方便地只更新 實體的指定屬性,產生的sql語句裡的set後的欄位會更少;

4.【智慧提示】 用linq, lamda表示式 有智慧提示,寫錯了編譯不過;寫sql語句字串,調sqlhelper,sql語句寫錯一樣編譯通過;

5.【安全】 省去了防止sql注入的麻煩;

6.【資料庫變更】使用EF,切換較方便;

7.【效率】 使用EF要比使用Ado.net開發效率高;

8.【可讀性】 程式碼的可讀性更高.