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

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

步驟 2:建立 PremiumSuppliers 繼承 Suppliers (TPT 繼承)
- 刪除 PremiumSuppliers 與 Suppliers 的關聯
- 設定 PremiumSuppliers 繼承 Suppliers
- 移除 PremiumSuppliers 的
PremiumSupplierID 屬性 (主鍵由基底類別繼承)
- 修正映射視圖


再次更新模型驗證
向導偵測到:兩個 PK-to-PK 關聯轉為一個繼承關係 + 一個實體對應兩表映射。模型無變更,更新完成。
Update Model Wizard 五大已知限制
- 無法自動更新屬性:資料庫欄位型別/長度變更時,實體屬性不會自動同步
- 無法重新加入已刪除實體:需手動在 XML 編輯器刪除 SSDL 對應元素,或手動重建
- 無法恢復已刪除屬性:同理需手動處理
- 主鍵變更導致關聯遺失:變更實體主鍵會導致現有關聯失去身分識別,需手動刪除舊關聯、建立新關聯
- 無法偵測資料庫物件重命名:重命名視為「刪除舊物件 + 新增新物件」
除上述限制外,此功能對模型演進支援良好,實務上極具價值。