codefirst資料庫遷移

來源:互聯網
上載者:User

標籤:initial   設定   資料庫遷移   auto   migrate   ase   nbsp   檔案   models   

一、為模型更改設定 Code First 資料移轉

    1、工具—>庫封裝管理員—>封裝管理員控制台—>輸入“Enable-Migrations”  或者     

          Enable-Migrations -ContextTypeName Mvc.Models.DataContext

Enable-Migrations -ContextTypeName 命名空間.上下文名稱

          註:如果正確的話 則顯示“已為項目 xxx啟用 Code First 移轉。”,

          Enable-Migrations命令建立了一個Migrations檔案夾和Configuration.cs檔案

    2、封裝管理員控制台—>輸入“add-migration Initial”建立初始化遷移。

         註:名稱“Initial”是隨意命名,即要添加的欄位。用來命名建立好的遷移檔案。

    3、封裝管理員控制台—>輸入“update-database”
    4、運行程式,更新完畢。

二、進一步
    問題已經解決了,我們再來深入一下這種遷移方式。
    當我們增加列(增加實體欄位)時,可以不必重複上面的所有操作。
    1、只需要將\Migrations\Configuration.cs檔案中的AutomaticMigrationsEnabled = false;改成true
    2、工具—>庫封裝管理員—>封裝管理員控制台—>輸入“update-database”

三、當我們刪除列(刪除實體欄位)時,同樣使用上面的操作,沒有成功,報會遺失資料,

        所以不能簡單地執行“update-database”就能完成。

    1、執行命令“add-migration Initial”
    2、執行命令“update database”
    3、運行程式,更新完畢

 

四、很強大的遷移

public class ContactContext : DbContext
    {
        public ContactContext()
            : base("name=DefaultConnection")
        {
            //自動建立表,如果Entity有改到就更新到表結構
            Database.SetInitializer<ContactContext>(new MigrateDatabaseToLatestVersion<ContactContext, ReportingDbMigrationsConfiguration>());
        }


        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //表名為類名,不是上面帶s的名字  //移除複數表名的契約
            modelBuilder.Conventions.Remove<IncludeMetadataConvention>();     //不建立EdmMetadata表  //防止黑幕交易 要不然每次都要訪問 EdmMetadata這個表
        }


        public DbSet<City> Cities { get; set; }
        public DbSet<Area> Area { get; set; }
        public DbSet<Campaign> Campaign { get; set; }
    }


    internal sealed class ReportingDbMigrationsConfiguration : DbMigrationsConfiguration<ContactContext>
    {
        public ReportingDbMigrationsConfiguration()
        {
            AutomaticMigrationsEnabled = true;//任何Model Class的修改將會直接更新DB
            AutomaticMigrationDataLossAllowed = true;
        }
    }

 

codefirst資料庫遷移

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.