首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

資料點專欄:使用視覺化設計工具設計實體資料模型 (EDM) 完整指南

     編輯:關於.NET

實體框架為 ADO.NET 帶來革命性技術,開發者可針對邏輯模型 (EDM) 而非實體資料庫結構編程,大幅提升彈性。核心在於實體資料模型 (EDM),定義實體類型、關聯與容器,透過 CSDL/MSL/SSDL 三層 XML 映射至關聯式資料庫。Visual Studio 2008 提供視覺化 EDM 設計工具,讓模型建立與修改更直觀高效。

EDM 架構與三層映射

實體框架概觀

實體框架連接應用與資料庫

  • CSDL (Conceptual Schema Definition Language):定義概念實體模型,開發者直接操作的對象
  • SSDL (Store Schema Definition Language):定義資料庫儲存結構 (資料表、檢視、預存程序)
  • MSL (Mapping Specification Language):定義 CSDL 與 SSDL 之間的映射關係

三層 XML 整合在單一 .edmx 檔案中,設計工具資訊僅設計時使用,CSDL/MSL/SSDL 編譯時產生類別。

使用精靈從資料庫產生 EDM

加入 EDM 檔案

選擇資料庫物件

  1. 專案加入「ADO.NET Entity Data Model」項目
  2. 選擇「從資料庫產生」
  3. 設定連線字串 (Northwind 範例資料庫)
  4. 選取資料表與預存程序 → 產生 .edmx

預存程序對應至模型方法

預存程序預設僅在 SSDL 定義,需手動映射至 CSDL 方法:

<!-- CSDL: FunctionImport -->
<FunctionImport Name="GetTenMostExpensiveProducts" 
                EntitySet="Products" 
                ReturnType="Collection(Self.Product)" />

<!-- MSL: FunctionImportMapping -->
<FunctionImportMapping FunctionImportName="GetTenMostExpensiveProducts"
                       FunctionName="NWModel.Store.Ten_Most_Expensive_Products" />

若有參數,在 FunctionImport 加入 <Parameter Name="CategoryId" Type="Int32" Mode="in" />。

EDM 設計工具三大視窗

類別檢視 EDM

實體資料模型設計工具

  1. Entity Model Browser:樹狀顯示所有 CSDL/SSDL 元素 (EntityTypes、Associations、EntitySets、FunctionImports 等)
  2. Entity Data Model Designer:視覺化設計介面,拖曳編輯實體、關聯、純量/導覽屬性。支援重新命名實體類型 (如複數改單數)
  3. Entity Mapping Details:檢視/編輯實體與資料表欄位映射、條件對應 (Condition)

實體繼承設計:建立衍生實體

建立繼承實體

以 Product 為基底建立 DiscontinuedProduct:

  1. 設計工具右鍵 → Add → Entity,指定 Base Type 為 Product
  2. 在 Mapping Details 中移除基底實體的 Discontinued 欄位映射
  3. 為 Product 加入 Condition: Discontinued = 0
  4. 為 DiscontinuedProduct 加入 Condition: Discontinued = 1

Condition 寫入 MSL EntityTypeMapping,查詢時自動篩選,儲存時自動設定欄位值。衍生實體可額外新增屬性。

最佳實務建議

  • 盡早命名核心元素 (EntityType、EntityContainer、Association),減少後續重構
  • 善用錯誤清單視窗快速定位 XML 參考失效
  • 修改模型後同步更新手動編輯的 XML 區段 (如 FunctionImport)
  • 領域驅動設計 (DDD) 可先建立空模型再設計實體,再產生資料庫

總結

視覺化 EDM 設計工具配合 XML 編輯,支援繼承、預存程序映射、業務建模等完整功能。完成模型後透過 Object Services (含 LINQ to Entities) 操作極為簡單,且修改映射即可隔離資料庫結構變更,實現真正的關注點分離。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved