天天看點

Entity Framework的核心 – EDM(Entity Data Model) 一

 這次開發項目。我依舊做的是.Net,前幾個月的項目底層設計使用的的是 ORM 思想。技術選用的是NHibernate。這次也不例外,開發.Net項目。依舊使用的是ORM的思想。不同的是這次開發技術選用的是EF(EntityFrameWork)。這個架構但是讓我費眼不少。我了解它,從它的XML開始的。開始說說有關EF中xml的解讀。

一、EnityFramework

         EnityFramework的全程是ADO.NET Entity Framework 。和Nhibernate一樣。EF 相同是遵守ORM的思想。利用了抽象化資料結構的方式,将每一個資料庫對象都轉換成應用程式對象 (entity)。而資料字段都轉換為屬性 (property)。關系則轉換為結合屬性 (association),讓資料庫的 E/R 模型全然的轉成對象模型。如此讓程式設計師能用最熟悉的程式設計語言來調用訪問。

        EF是怎樣來實作這個原理的呢?

         EF中存在一個基本的檔案:*.edm 。這就是EF的核心。

EF以EDM( Entity Data Model ) 為主。将資料邏輯層切分為三塊,分别為 Conceptual Schema, Mapping Schema 與 Storage Schema 三層,其上還有 Entity Client。Object Context 以及 LINQ 能夠使用,今天咱們讨論的是EDM。先看圖:

Entity Framework的核心 – EDM(Entity Data Model) 一

  這三層的功能各自是:

      (1) 概念層:負責向上的對象與屬性顯露與訪問。

    (2) 相應層:将上方的概念層和底下的儲存層的資料結構相應在一起。

    (3) 儲存層:依不同資料庫與資料結構,而顯露出實體的資料結構體,和 Provider 一起。負責實際對資料庫的訪問和 SQL 的産生。

這樣協同工作讓資料訪問的工作得以順利與完整的進行。

二、edm相應的XML

   edm 有三層。與之相應的xml也有三層:csdl(Conceptual Schema Definition Language),msl(Mapping Specification Language),ssdl(Storage Schema Definition Language)。

   1、CSDL基本結構

      這個檔案全然以程式語言的角度來定義模型的概念。

即當中定義的實體、主鍵、屬性、關聯等都是相應于.NET Framework中的類型。以下是csdl的基本結構。沒有實體關聯:

   每一個節點含義例如以下。

EntityContainer

Name

EntityContainer的名稱。其将作為産生的ObjectContext類的名稱

EntitySet

ObjectContext内與此Entity類型相應的屬性名

EntityType

ObjectContext内與此Entity類型相應的屬性的類型

AssociationSet

End

有兩個End子節點,分别描寫叙述建立此關系的兩個EntitySet

Role

相應到Association中End節的Role屬性。起到将AssociationSet與Association相關連的作用。

注意:假設 該實體有與其它實體關聯。有例如以下變動:

   (1):那麼在EntityContainer中就會多出一個Association節點,Association節,這是真正定義關系的地方。看例如以下執行個體:

   (2)EntityType節點中添加:NavigationProperty節點

詳細節點的含義例如以下: 

Entity Class的名稱

Abstract

是否為抽象類

BaseType

父類

Key

主鍵

Property

主鍵之屬性

屬性名

屬性

Type

屬性類型

Nullable

是否同意null

MaxLength

屬性最大長度

FixLength

是否固定長度

NavigationProperty

關系屬性

   這就是主要的CSDL ,你在edm中加入一個實體,用模型畫出來的。然後通過打開XML方式來檢視,對照XML中的csdl ,你會發現兩者一樣。

下篇繼續:edm中ssdl。

本文轉自mfrbuaa部落格園部落格,原文連結:

本文轉自mfrbuaa部落格園部落格,原文連結:http://cnblogs.com/jiqing9006/category/886175.html,如需轉載請自行聯系原作者