- Published on
ASP.NET MVC - 使用資料庫開發 (四)
當資料庫有變動時 從資料庫更新模型時 不一定會更新
新增資料表時:
如同新增一個新的 EF
之後加入資料表一樣,會自動更新
所以 新增資料表時 會自動新增相關定義到 SSDL、CSDL 與 MSL
刪除資料表時:
先新增一個測試的資料表叫 Test
,並且更新 EF
在資料表上按右鍵,選擇刪除
Update EF
之後重 Build,會發現有 Error 出現
用 'XML' 打開 EF
來看,會發現 CSDL
的 Test
資料表沒有刪除
手動把 CSDL
的 Test
資料表刪除就好了
所以刪除資料表時 會自動刪除與 SSDL 與 MSL 相關的資料表定義,而 CSDL 不會刪除
新增資料表的欄位:
如同前一篇文章 ASP.NET MVC 使用資料庫開發 (三), 新增 建立時間
的欄位後 Update EF
,會自動新增相關定義到 SSDL、CSDL 與 MSL
刪除資料表的欄位:
把 客戶資料
之前新增的 建立時間
欄位給刪除
Update EF
之後重 Build,會發現有 Error 出現
用 'XML' 打開 EF
來看,會發現 CSDL
的資料欄位沒有刪除
手動把 CSDL
的資料欄位 建立時間
刪除就好了
所以刪除資料表欄位時 會自動刪除與 SSDL 與 MSL 相關的資料表 欄位定義,而 CSDL 不會刪除
修改資料表的欄位名稱:
相當於先刪除一個欄位再新增一個欄位
舊欄位 會自動刪除與 SSDL
與 MSL
相關的資料表欄位定義,而 CSDL
不會刪除
新欄位 會自動新增相關定義到 SSDL
、CSDL
與 MSL
所以修改欄位名稱時 要自已手動把舊的資料欄位刪除
修改資料表的欄位屬性:
會自動修改 SSDL
、CSDL
的相關定義,而在這種狀況下 MSL
不需更新
結論
只要是需要刪除到程式碼的區域 ( 也就是 CSDL
),EF
就不會作任何更新
是有不方便的地方,不過也是讓開發人員在次確認是否要作刪除的動作, 算是作一層保險 ??