Entity Framework 6 與資料庫

1 篇文章 / 0 new
author
Entity Framework 6 與資料庫
使用Entity Framework設計資料庫存取程式的方式分為三種:
  • Database First:先有資料庫的結構描述資訊,利用設計工具,做逆向工程,產生模型(Model),並產生對應的Entity 類別。
  • Model First:先使用設計工具建立模型(Model),再利用模型來建立資料庫結構描述資訊,並產生對應的Entity 類別。
  • Code First:先定義Entity類別與對應(mapping)的程式碼,再根據搭配的資料庫分為兩種設計方式:使用新資料庫:由模型自動產生資料庫結構描述資訊。搭配Code First Migration處理後續資料庫結構描述異動的問題。使用既存資料庫:從現有資料庫結構描述資訊,搭配逆向工程工具還原模型(Model),產生對應的Entity 類別。
►建立方式
1. 新增 Web應用程式, 對話盒中選取「Empty」及勾選「MVC」
初始空專案結構如下
經過以上四個程序, 一個簡易的 Entity Framework MVC Web就可以運作了. 很快就會面對的一個問題是當 Entity Model 有變動時該如何處裡? 此時我們就需要 啟用資料移轉功能 來達成, 首先開啟 套件管理主動台

►套件管理主控台
輸入指令 enable-migrations , 來啟用Entity Framework資料庫移轉功能, 此時專案結構會增加一個 Migrations 目錄, 同時也增加 _MigrationHistory 資料表來管理資料結構的變化歷程
 
接著更動 MyModel 內容
public class MyModel
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Ps { get; set; } //新增
    }
完成後在套件管理主控台 輸入 Add-Migration AddMyModelColumn 命令, 則系統會因應實際變動情況產生相關的檔案, 此階段資料庫尚未變動.
Configuration.cs 這是當資料庫欄位異動時需要異動資料時就可放置在 seed() 內進行處置
internal sealed class Configuration : DbMigrationsConfiguration<Web_ER_MVC.Models.WebDBConnect>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }
 
    protected override void Seed(Web_ER_MVC.Models.WebDBConnect context)
    {
        //  This method will be called after migrating to the latest version.
 
        //  You can use the DbSet<T>.AddOrUpdate() helper extension method
        //  to avoid creating duplicate seed data. E.g.
        //
        //    context.People.AddOrUpdate(
        //      p => p.FullName,
        //      new Person { FullName = "Andrew Peters" },
        //      new Person { FullName = "Brice Lambson" },
        //      new Person { FullName = "Rowan Miller" }
        //    );
        //
    }
}
接下來先 重建專案 後再輸入 update-database –Verbose 此時資料庫就會實際更動成最新狀態, 同時資料庫也會產生一比異動紀錄
 
參考資源:
Free Web Hosting