CodeFirst資料移轉

來源:互聯網
上載者:User

標籤:

1.DBContext的代碼如下:

 1 public class Context:DbContext 2     { 3         public Context() 4             : base("name=ConnStr") 5         { 6             7         } 8  9         public DbSet<Menu> Menus { get; set; }10     }

2.Menu類如下:

 1 [Table("Menu")] 2     public class Menu 3     { 4         [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)] 5         public int ID { get; set; } 6         [Required] 7         public int PID { get; set; } 8         [Required] 9         public string Name { get; set; }10         [Required]11         public string Url { get; set; }12     }

Ctrl+F5運行沒有問題。

3.修改Menu類,改成如下:

[Table("Menu")]    public class Menu    {        [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]        public int ID { get; set; }        [Required]        public int PID { get; set; }        [Required]        public string Name { get; set; }        [Required]        public string Url { get; set; }        public string Test { get; set; }    }

再次運行,發現此時報錯

報錯的原因是因為資料庫的結構已經改變,此時有兩種方法可以解決該問題。

1.設定每次資料庫結構改變之後都刪除原先的資料庫再重建

只需要加上下面的代碼:

 public Context()            : base("name=ConnStr")        {            Database.SetInitializer(new DropCreateDatabaseIfModelChanges<Context>());            this.Database.Initialize(true);        }

這樣設定之後再次運行沒有問題,但是由於資料庫被刪掉了再重建的,所以原先的資料都沒有了。要想保留原先的資料可以使用Migration資料移轉的方式

2.資料移轉

1)點擊工具選項卡,選擇程式包管理主控台

2)輸入命令Enable-Migrations,此時在項目下會建立一個Migrations檔案夾,裡麵包括一個Configuration.cs檔案

3)輸入命令Add-Migration XXXX,此時會在Migrations檔案夾下建立一個yyyyMMddHHmmss_XXXX.cs檔案,裡麵包括一個Down和UP方法,分表表示此次資料移轉復原和升級的方法

4)輸入命令Update-Database-Verbose,資料移轉完成,可以看到資料移轉的SQL語句。

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.