ISSUE

2021


【技術類】Entity Framework Code First 等三種模式差異  




.net MVC,Entity Framework 有三種開發模式,依照不同的情境,可以使用不同的模式:

Database First 資料庫優先模式:有視覺化設計視窗,適合既有存在的資料庫,當資料庫定義變更後,可使用"從資料庫更新模型"功能更新到 .edmx模型檔,要注意的是,更新後,資料庫的原有資料會消失!在正式環境要特別注意!

Model First 模型優先模式:有視覺化設計視窗,適合用來建立全新的資料庫,當.edmx模型檔有變更,可使用"由模型產生資料庫"來更新到資料庫,要注意的是,更新後,資料庫的原有資料會消失!在正式環境要特別注意!

Code First 程式優先模式 (微軟主推):沒有視覺化設計視窗,完全用類別程式來定義。如果是建立新的資料庫,需手工撰寫類別檔,如果是從現有(既有)資料庫,有工具可產生類別檔:在models資料夾新增一個 “ADO.NET實體資料模型" ->命名之->選擇 “來自資料庫的Code First" -> 連接到現有資料庫->勾選資料表,這樣,在models資料夾就會產生Entity類別檔和DbContext類別檔及Web.config內的資料庫連線設定->最後要 建置編譯專案 !

需建立DbContext 衍生類別(Date Context Class),DbContext 類別負責對資料庫作業,並宣告DbSet<T>實體,DbSet<T>是表示Entity實體,可包含多個實體(也就是一個DbSet中包含許多Entity實體資料),同時提供資料的 Create、Read、Update、Delete 方法 (DbSet類別提供大量的方法可供使用)。

同時支援既有或新的資料庫。有獨特的 Migrations 資料庫更新機制,不會造成原有資料消失,還有初始的樣本範例資料佈建機制。Migrations 機制 提供了變更的紀錄與歷程,而非粗暴的把原來的資料表Drop掉,再建立新的。

Migrations 第一次初始化:
在套件管理主控台中輸入 Enable-Migrations
如要新增初始的樣本範例資料,在 Configuration.cs 中的 Seed() 方法中建立樣本範例資料!
在套件管理主控台中輸入 Add-Migration XXX  (XXX自行命名),假設是輸入Add-Migration FirstCreate ,則會產生一個同名的 .cs檔,該檔中會包含 Up() 與 Down() 兩個方法!
在套件管理主控台中輸入 update-database 對資料庫作更新!

Migrations 每次有異動時之更新:(可省略Enable-Migrations)
在套件管理主控台中輸入 Add-Migration XXX  (XXX自行命名)
在套件管理主控台中輸入 update-database 對資料庫作更新!

以上是Entity Framework Code First 等三種模式差異與Code First的概念與詳細步驟,許多.net技術人員的面試也會問到Entity Framework的使用方式,縱使沒有用過,也需有基本的概念與瞭解!



前往討論區 這篇文章的網址 (可分享到FB、PTT、Mobile01):

延伸閱讀:北部新冠快篩站預約與等候結果
延伸閱讀:疫情嚴重時少出門必備工具
延伸閱讀:口罩有縫隙! 美國CDC教你knot and tuck改良自己的口罩
延伸閱讀:居家工作 網路攝影機 幫忙看門/看小孩
延伸閱讀:「公費疫苗可選廠牌」哪種廠牌好? 要投保疫苗險嗎?
延伸閱讀:WFH在家工作 急需傳真不用跑便利商店
延伸閱讀:WFH在家工作時時關心疫情 – 小米盒子(追劇看新聞)
延伸閱讀:勞工紓困貸款 貸了有何影響?
延伸閱讀:打不到新冠肺炎(COVID-19)疫苗? 先打肺炎鏈球菌疫苗?
延伸閱讀:COVID-19新冠肺炎 居家快篩試劑,保護自己保護家人
延伸閱讀:必須在長輩手機上設定的 緊急聯絡人與緊急醫療資訊 (快樂缺氧怎麼辦?!) 
延伸閱讀:打不到新冠肺炎(COVID-19)疫苗? 先打肺炎鏈球菌疫苗?
延伸閱讀:必須在長輩手機上設定的 緊急聯絡人與緊急醫療資訊 (快樂缺氧怎麼辦?!) 
延伸閱讀:打了新冠肺炎(COVID-19)疫苗 副作用 (親身經歷) 


您也許對這文章有興趣:

您也許對這文章有興趣:

數位高利活儲帳戶 (渣打/花旗/華南/台新)
數位高利活儲帳戶 (渣打/花旗/華南/台新)

Line 使用常見問題
發錯的LINE訊息可以收回或刪除嗎?

 
其它文章: 前往瀏覽目錄
本篇文章的行動版網頁: 切換到行動版本
返回頂端

Copyright © 2008-2021 Anson | Secured by SSL Connection SSL