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

Entity Framework Update Model From Database 入門實戰 (上):資料表異動、欄位變更與關聯衝突解決

     編輯:關於.NET

Entity Framework 的「Update Model from Database」功能支援新增資料表/欄位、處理重命名、偵測繼承與映射變更。本文以 Northwind 資料庫為例,示範基本操作流程與常見衝突處理。

基本操作流程

  1. 以 Northwind 資料庫建立模型,初始僅加入 Products 表
  2. 資料庫將 Products 改名為 Product
  3. 右鍵設計介面選擇「Update Model from Database」
  4. 精靈三大分頁:
    • Add:資料庫有、模型無的物件 (新增表、檢視、存儲程序)
    • Refresh:資料庫與模型皆有的物件 (同步變更)
    • Delete:模型有、資料庫無的物件 (清理過時物件)

右鍵選單

更新精靈介面

新增關聯表與解決映射衝突

加入 Orders、Order_Details、Suppliers 表後,驗證出現錯誤:

「Non-primary-key column(s) [SupplierID] being mapped in both fragments...」

原因:初始只有 Products 表時,SupplierID 為純量屬性;加入 Suppliers 後,關聯映射也指向 SupplierID 欄位,造成重複映射。

關聯映射衝突

解決:手動刪除 Product 實體的 SupplierID 純量屬性,保留導航屬性關聯,驗證通過。

欄位增減同步:向導「不刪除模型元素」策略

資料庫對 Suppliers 表:新增 IsCurrent 欄位、刪除 ContactTitle 欄位。更新模型後:

  • IsCurrent 自動新增為屬性
  • ContactTitle 屬性保留,驗證錯誤:「Property ContactTitle is not mapped...」

屬性清單

解決:手動刪除 ContactTitle 屬性。此為向導保守策略——寧可保留舊屬性讓開發者手動確認,避免誤刪。

進階映射分析:PK-to-PK 關聯偵測

資料庫新增 PremiumSuppliers、SupplierContracts 兩表,皆與 Suppliers 為 PK-to-PK 關聯。更新模型後,向導分析映射並提示可轉為繼承或多表映射 (詳見下篇)。

PK-to-PK 關聯結構

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