第一章(1) 開始學習Entity Framework啦

來源:互聯網
上載者:User

Entity Framework 一覽
   EF集合了一系列以方便使用資料的應用程式的開發。和微軟之前的資料訪問技術不一樣,EF和Visual Studio一起,構成了一個全面的、基於模型的生態系統,你可以用它來開發一些範圍廣泛的資料導向的應用程式。 比如用Asp.net和Sliverlight開發傳統型程式、伺服器端程式、Internet程式,用WCF的分布式多機程式等。

Model

    EF其實所做的所有工作都是為了構建模型。模型在EF中代表的意義不是憑空冒出而是逐漸演化的。在EF中有很多地方都是受到以往技術和模式的遺傳影響。比如實體關聯圖和長時間都在用的概念-邏輯-物理分層設計的方法。

  EF用Entity Data Model(EDM)來標誌模型。EDM是一種用來定義程式中用到的資料的正式結構,它定義了資料類型、明確哪種類型的關聯是允許的、模型支援的schemas以及在不同schemas中的映射。(schemas不好翻譯,資料庫中術語,可以叫模式,db->schemas->tables)。程式你建的模型就是對應著EDM中的條目來的,這有點像EDM就是一個Class(類),而模型都是滿足它的Instance(執行個體),但只是有點像而已,它們是不一樣的,EDM中的是定義模型的結構。

   好吧,現在牽扯出來了很多術語了。首先,一個Model(模型)由三層組成:概念層、儲存層和映射層。每一層的文法都是在一個XML檔案中表示的,schema也在這個XML中有定義。為了方便,這三層的三個不同的XML檔案都綁在了一起,構成了一個尾碼名為.edmx的檔案。

   概念層模型,是開發人員實際能接觸的,這一層中已經沒有實體儲存體層的跡象,在CSDL(Conceptual Schema Definition Language)中定義。VS提供了一個功能齊全的設計介面,你可以直接在概念層上操作實體類型和各種關係。概念層模型是在CSDL中定義的。

    任何有用的程式都要有資料的持久化操作,在儲存層我們定義資料的儲存。它包括了表、列和資料類型的定義,這在SSDL(Store Schema Definition Language)中有記錄。

    在概念層和儲存層的映射層就是把這兩層各自的模型映射在一起。比如這個類中的屬性怎麼和資料庫中的那個欄位關聯起來。這些細節在MSL(Mapping Specification  Language)中定義。

 

一些術語

  EntityType(實體類型) ,它是一個類,定義了一個新的類型。它的執行個體叫做Entity,但經常都被統一叫做了Entity。Entity Type中定義了一些屬性,包括有純量屬性(Scalar)、複雜屬性(Complex type)和導覽屬性(navigation)。1-1,定義了兩個EntityType:Employee和Task。它們之間的關係是一對多的。

圖1-1

 

Association(關聯)   也如,兩個實體類型之間的關係叫做 Association 。有一對多,多對一,多對多和自身關聯。每一個EntityType都是一個EntityKey屬性,相當於主鍵標識,通常是由下層資料庫中的實際主鍵決定的。

EntitySet (實體集)  實體集就是一些EntityType執行個體的集合,或者也包含它的衍生類別型。在多數情況下,給定EntityType的執行個體們都是在同一個實體集裡的,但也有例外,叫MEST(Multiple EntitySets per Type),這個以後我們會講到一個例子。


ComplexType (複雜類型)是相關屬性的一個集合.複雜類型不像實體類型一樣有一個主鍵標識,它更像是把一堆相關的屬性群組合到一起,形成一個新的屬性。圖1-2就是一個很好的例子。Customer有正常的純量屬性(Id,Name,Phone),但同時又有兩個複雜屬性BillingAddress和ShipToAddress,這兩個複雜屬性都屬於同一個Adrress的複雜類型。Address類型中包含了各種資訊,但沒有一個可以說是主鍵的,它們只是一對相關屬性的集合。

 

 

 

 

 

圖1-2

 

 

Navigation properties(導覽屬性)這個是在資料庫中有直接外鍵關係的,EF可以通過它從一張表導航連結到另外一張表。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.