程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Entity Framework – Update Model From Database, Part 2

Entity Framework – Update Model From Database, Part 2

編輯:關於.NET

Update Model from Database 是EDM 設計器的一個重要改進功能,支持增加新的數據庫表和列,Model能夠正確處理類型(Type)和屬性(Property)的改名,能夠檢測繼承和映射的改變。這裡,我們簡要介紹這一功能的使用及其限制。

下來再次更新model,這次增加了上述2個新表。Model相關部分的更新如下:

現在,我們從SupplierContract復制屬性到Suppliers類型,並刪除 SupplierContracts類型。接著到Suppliers 類型的表映射視圖,通過點擊<Add a Table or View> 單元,並選擇 SupplierContracts,並映射Suppliers類型到SupplierContracts 表。映射視圖如下圖所示:

我們特別選中需要手動更改的地方:SuppliercontractID 列必須映射到Suppliers類型的ID屬性,這是為了Entity Framework 理解如何構建合適的數據庫查詢。

接著,我們刪除PremiumSuppliers 和Suppliers之間的關聯,是PremiumSuppliers繼承Suppliers類型。並刪除PremiumSuppliers中的PremiumSupplierID屬性,因為這個主鍵現在繼承自Suppliers,修復後的映射如下圖所示:

Model相關部分如下圖所示:

最後,我們再次更新model,這次model不會發生變化。上述向導分析了映射,同時也注意到2個PK-to-PK的關聯替換為:一個為繼承關系;另一個映射一個類型到2個數據表。

關於向導限制的最後總結如下:

1.當相應的數據庫列更新時,不能自動更新類型的屬性。

2.不能重新添加實體類型(entity types)- 一旦你在model中刪除了一個類型,重新添加這一實體類型的方法是手動創建,或者在XML編輯器中手動刪除SSDL中相應的XML元素。

3.也不能重新恢復屬性。

4.如果你更改類型的主鍵,所有當前的關聯將丟失它們的identity,且將引入新的關聯 – 你需要刪除舊的關聯。

5.不能檢測數據庫對象的更名 – 更名意味著刪除舊的對象,增加新的對象。

除了這些限制外,你也將發現這一新的功能不僅有用,而且適用。期待你的反饋。

英文鏈接:

1.ADO.NET team blog, Update Model From DB,

http://blogs.msdn.com/adonet/archive/2008/04/01/update-model-from-db.aspx

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved