iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 18
0

Entity Data Model-EDM(實體資料模型)

是一種XML格式的純文字檔案,用以描述資料結構的概念,以統一的概念模型對映不同的形態資料來源,藉此避免接觸真正的資料結構。

組成

  • Entity Type 實體型別
  • Association Type 關聯型別
  • Property 屬性
    http://ithelp.ithome.com.tw/upload/images/20161230/20103808EWl3t1D5kh.png

內容

包含了儲存模型、概念模型以及兩種模型相關配置資訊,以XML文字格式儲存的檔案內容,VS同時提供視覺化圖形工具

我們可以在.edmx檔按按右鍵選「開啟方式」,用XML文字編輯器打開來看內容
http://ithelp.ithome.com.tw/upload/images/20161230/20103808ZM8cJ05NFZ.png
可以看出內容包含三個部份:

  • ConceptualModels(概念模型)
    在XML檔裡面CSDL(Conceptual Schema Definition Language)的區塊,內容包含了EntityContainer與EntityType
     <EntityType Name="Members">
          <Key>
            <PropertyRef Name="MemberId" />
          </Key>
          <Property Name="MemberId" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
          <Property Name="FirstName" Type="String" MaxLength="40" FixedLength="false" Unicode="true" />
          <Property Name="LastName" Type="String" MaxLength="40" FixedLength="false" Unicode="true" />
          <Property Name="Gender" Type="String" MaxLength="1" FixedLength="true" Unicode="false" />
          <Property Name="DateOfBirth" Type="DateTime" Precision="3" />
          <Property Name="TelephoneNumber" Type="String" MaxLength="20" FixedLength="false" Unicode="false" />
          <Property Name="Street1" Type="String" MaxLength="100" FixedLength="false" Unicode="true" />
          <Property Name="City" Type="String" MaxLength="100" FixedLength="false" Unicode="true" />
          <Property Name="ZipCode" Type="String" MaxLength="15" FixedLength="false" Unicode="false" />
          <Property Name="Email" Type="String" MaxLength="Max" FixedLength="false" Unicode="false" />
        </EntityType>
    

可以看到一個Table的內容都被寫入在這個地方

  • StorageModels(存放模型)
    在XML檔裡面SSDL(Store Schema Definition Language)的區塊,進一步的對應至底層資料來源結構,他對應的是底層資料庫真正的名稱,提供CSDL所需的對應資訊
  • Mappings(對應)
    在XML檔裡面MSL(Mapping Specification Language)的區塊,在這個區塊逐一對應CSDL和SSDL兩個區塊內容,可以透過edmx圖形化介面,選擇一個Table右鍵/顯示對應資訊中看到與底層的對應關係
    http://ithelp.ithome.com.tw/upload/images/20161230/20103808T9QdUzyw9C.png

POCO

#Code First透過典型的傳統類別物件(Plain Old Class Object-POCO)與資料庫結構進行對應,簡化整個EF開發過程。

DbContext

不管是透過EF Desinger或 Code First模型所建立的EDM,都必須經由context進行資料庫的互動作業。

DbSet

表示資料模型中的特定實體物件集合,當DbContext將查詢送入資料庫並取得回傳資料時,這些資料轉換成對應的EDM,然後儲存於DbSet中,並透過DbContext物件屬性公開以支援應用程式存取。

Model First/Code First比較:http://stackoverflow.com/questions/5446316/code-first-vs-model-database-first
EF: http://www.entityframeworktutorial.net/code-first/what-is-code-first.aspx


上一篇
Day17_Model之EntityFramework-CodeFirst實作
下一篇
Day19_LINQ前序
系列文
從Asp.Net MVC5的起跑點認識現代網站30

尚未有邦友留言

立即登入留言