Entity Framework架構介紹

jopen 12年前發布 | 54K 次閱讀 .NET開發 .NET

Entity Framework 整體架構如圖:

Entity Framework架構介紹

 

Entity Data Model(EDM)是類和數據庫之間的映射模型,它包含三個映射文件。

LINQ to Entities和Entity SQL是查詢對象模型的兩種語言。

Object Services層在執行查詢時將查詢轉換為一個命令樹,并將這個命令樹傳遞給Entity Client;在返回結果時將Entity Client層獲取的對象表格式數據轉換為對象,同時它也負責管理對象狀態,跟蹤對象的改變。

Entity Client data provider層又稱為Entity Client主要將LINQ to Entities和Entity SQL的查詢轉換為SQL語句,同時將數據庫表格式數據轉換為對象表格式數據,并傳遞給Object Services層。

1、EDM

EDM由三個XML文件組成,三個文件主要提供相關的metadata。如表:

Filename Description Alternative name Extension
Conceptual model Describes the model classes and
their relationships
Conceptual schema, conceptual
side
CSDL
Storage model Describes the database tables,
views, and stored procedures, and
their keys and relationships
Storage schema, storage side SSDL
Mapping model Maps the conceptual and storage
models
Mapping schema, mapping side MSL

 

在運行時,這些文件將被解析為對象,這些對象可以被查詢從而獲得類,數據庫以及映射的metadata,當Entity Framework進行映射時,它會查詢EDM從而獲取metadata。

Visual Studio的EF designer team設計了新的文件EDMX文件,EDMX文件將上述三個文件集合起來同時加入了設計器需要的信息,然而,EDM才是真正的映射層,在編譯時,EDMX文件將被分割開,并產生三個EDM文件。

2、Object Services

Object Services在EF中主要負責管理對象。

當執行查詢時,Object Services將查詢轉換為一個命令樹,并將這個命令樹傳遞給Entity Client,這一過程稱為查詢轉換,轉換過程會因使用LINQ to Entities或者Entity SQL而不同。

當返回結果時,Object Services將Entity Client層獲取的對象表格式數據轉換為對象,之所以成為對象表格式數據,是因為它與數據庫存儲的數據庫表格式數據有所不同,對象表格式數據的沒一行代 表一個對象,如果它有屬性引用其它類,它的列將會含有該類的整個行,這一過程稱為object materialization,例如:

Entity Framework架構介紹

Context是Object Services和用戶的接口,它像一個緩存一樣保存著當前的對象模型,這些對象同時被state manager跟蹤,這個機制將會管理對象的改變,并在適當時候正確的更新到數據庫。

3、Entity Client

在執行查詢時,Entity Client將命令數轉換為SQL語句,在返回結果時,Entity Client將數據庫表格式數據轉換為對象表格式數據,并傳遞給Object Services層。

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!