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

Entity Framework Update Model From Database 進階實戰 (下):繼承映射、多表對應與向導限制詳解

     編輯:關於.NET

承接上篇,本文示範進階模型更新情境:將 SupplierContract 併入 Suppliers 實體、建立 PremiumSuppliers 繼承關聯、多表映射單一實體,並總結 Update Model Wizard 的已知限制。

情境:新增 SupplierContracts、PremiumSuppliers 兩表

執行「Update Model from Database」加入兩表後:

模型更新後

步驟 1:合併 SupplierContracts 到 Suppliers 實體 (Table Splitting)

  1. 將 SupplierContracts 屬性複製到 Suppliers 類型
  2. 刪除 SupplierContracts 實體類型
  3. 在 Suppliers 的「表映射」視圖,點選「<Add a Table or View>」加入 SupplierContracts 表
  4. 將 SupplierContractID 欄位映射至 Suppliers 的 ID 屬性 (主鍵對應)

多表映射設定

步驟 2:建立 PremiumSuppliers 繼承 Suppliers (TPT 繼承)

  1. 刪除 PremiumSuppliers 與 Suppliers 的關聯
  2. 設定 PremiumSuppliers 繼承 Suppliers
  3. 移除 PremiumSuppliers 的 PremiumSupplierID 屬性 (主鍵由基底類別繼承)
  4. 修正映射視圖

繼承映射修正

模型最終狀態

再次更新模型驗證

向導偵測到:兩個 PK-to-PK 關聯轉為一個繼承關係 + 一個實體對應兩表映射。模型無變更,更新完成。

Update Model Wizard 五大已知限制

  1. 無法自動更新屬性:資料庫欄位型別/長度變更時,實體屬性不會自動同步
  2. 無法重新加入已刪除實體:需手動在 XML 編輯器刪除 SSDL 對應元素,或手動重建
  3. 無法恢復已刪除屬性:同理需手動處理
  4. 主鍵變更導致關聯遺失:變更實體主鍵會導致現有關聯失去身分識別,需手動刪除舊關聯、建立新關聯
  5. 無法偵測資料庫物件重命名:重命名視為「刪除舊物件 + 新增新物件」

除上述限制外,此功能對模型演進支援良好,實務上極具價值。

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