這章節主要使用、更新資料結構,EF6只要碰到更新動作是一件很可怕的事情,以下提供各位解決方案。
何謂 Edmx 檔案
edmx是EF產生的檔案,透過創建方式產生 SSDL、CSDL 、MSL 。
SSDL:定義實體資料庫。
CSDL:定義模型類別。
MSL(C-S Mapping):對應資料庫Table與Entity物件
更新方式
- 修改 edmx 檔案(用xml開啟)以及 模型類別
- 透過 edmx 圖形化方式修改。
- 若要更新model先刪掉裡面內容,才能確保保持一樣的內容。
更新結構/新增結構
這邊我們用兩種做法,開始前我們先新增 text4
當作範例,請參閱更新方式。
圖形化方式修改
一、 首先雙點擊edmx再來按下完成。
備註 : 更新部分已經存在的table 只需要按下完成即可。
二、 確認模型類型
這邊建議存檔完畢edmx在檢查類型會比較好,原因是當他完成更新結構需要loading一段時間,才會更新到類別,雖然它會自動更新類別極大優點也造成有缺陷問題。
備註 : 通常初期使用圖形化方式更新會比較好上手,EF6載入問題實在是無法排除這致命問題,建議少用圖形化方式更新結構。
XML修改、更新模型類別
一、先把模型類別內容修改
二、修改edmx檔案 (需要修三個地方)
變更型態
前公司部分常常遇到資料庫設計問題更改型態,來先看看圖形化處理方式。
備註 :開始前記得更新結構 ,將text4改為int資料型態。
圖形化方式缺點
如果我們按照原本操作可以看到,如果直接更新edmx只會更新DB結構並不會更新類別檔案型態。
圖形化方式(解決方式)
動作如下
- 打開 “模型瀏覽器” (必須要focus在edmx才能使用)
- 刪除 table參考 、以及模型參考
- 重新新增table即可
XML修改、更新模型類別
動作如下
- 修改模型類別
- 修改xml (SSDL、CSDL、CS mapping)
以上方式會遠遠比圖形化處理方式來得快很多,缺點是如果當table很大量可能會遇到改錯問題。
刪除結構
圖形化方式
這邊就比較單純許,只需要刪除現有實體模型以及更新資料庫參考即可。
XML修改、更新模型類別
因動作比較簡單這邊就不就操作。
- 修改xml (SSDL、CSDL、CS mapping)內容即可
- 修改類別模型
結語
EF6 部分比較麻煩是更新結構部分,但還是盡量避免使用 圖形化方式修改,主要原因是開啟、存檔耗損資源以及時間特別長,且如果強制關掉會造成很可怕的問題建議與github保持一定的版本才進行操作。
如果想要深入了解xml結構可以參考下方測試連結。
Github : https://github.com/JontCont/NetFramework_EF6_Demo