- 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 就不會作任何更新
是有不方便的地方,不過也是讓開發人員在次確認是否要作刪除的動作, 算是作一層保險 ??
