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

行動版 for , 瀏覽人次: 1932  , SSL Connection SSL
  • .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的使用方式,縱使沒有用過,也需有基本的概念與瞭解!

回 文章列表頁