這章節主要使用、更新資料結構,EF6只要碰到更新動作是一件很可怕的事情,以下提供各位解決方案。

何謂 Edmx 檔案

edmx是EF產生的檔案,透過創建方式產生 SSDL、CSDL 、MSL 。
SSDL:定義實體資料庫。
CSDL:定義模型類別。
MSL(C-S Mapping):對應資料庫Table與Entity物件

更新方式

  1. 修改 edmx 檔案(用xml開啟)以及 模型類別
  2. 透過 edmx 圖形化方式修改。
  3. 若要更新model先刪掉裡面內容,才能確保保持一樣的內容。

更新結構/新增結構

這邊我們用兩種做法,開始前我們先新增 text4 當作範例,請參閱更新方式。

圖形化方式修改

一、 首先雙點擊edmx再來按下完成。
備註 : 更新部分已經存在的table 只需要按下完成即可。

二、 確認模型類型
這邊建議存檔完畢edmx在檢查類型會比較好,原因是當他完成更新結構需要loading一段時間,才會更新到類別,雖然它會自動更新類別極大優點也造成有缺陷問題。

備註 : 通常初期使用圖形化方式更新會比較好上手,EF6載入問題實在是無法排除這致命問題,建議少用圖形化方式更新結構。

XML修改、更新模型類別

一、先把模型類別內容修改

二、修改edmx檔案 (需要修三個地方)

變更型態

前公司部分常常遇到資料庫設計問題更改型態,來先看看圖形化處理方式。
備註 :開始前記得更新結構 ,將text4改為int資料型態。

圖形化方式缺點

如果我們按照原本操作可以看到,如果直接更新edmx只會更新DB結構並不會更新類別檔案型態。

圖形化方式(解決方式)

動作如下

  1. 打開 “模型瀏覽器” (必須要focus在edmx才能使用)
  2. 刪除 table參考 、以及模型參考
  3. 重新新增table即可

XML修改、更新模型類別

動作如下

  1. 修改模型類別
  2. 修改xml (SSDL、CSDL、CS mapping)
    以上方式會遠遠比圖形化處理方式來得快很多,缺點是如果當table很大量可能會遇到改錯問題。

刪除結構

圖形化方式

這邊就比較單純許,只需要刪除現有實體模型以及更新資料庫參考即可。

XML修改、更新模型類別

因動作比較簡單這邊就不就操作。

  1. 修改xml (SSDL、CSDL、CS mapping)內容即可
  2. 修改類別模型

結語

EF6 部分比較麻煩是更新結構部分,但還是盡量避免使用 圖形化方式修改,主要原因是開啟、存檔耗損資源以及時間特別長,且如果強制關掉會造成很可怕的問題建議與github保持一定的版本才進行操作。

如果想要深入了解xml結構可以參考下方測試連結。
Github : https://github.com/JontCont/NetFramework_EF6_Demo