下面做一個例子,Category是用戶新建的一個實體類,然后添加一個字段,然后讓數據庫中的Category表也添加一個字段
1.Category.cs
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; namespace BlogAppDAL.Entities { public class Category { public int Id { get; set; } [Required] [StringLength(200)] public string CategoryName { get; set; } //public DateTime CreateDate { get; set; } public virtual ICollection<Blog> Blogs { get; set; } public Category() { Blogs = new HashSet<Blog>(); } } }
開始了添加一個字段,代碼如下:
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; namespace BlogAppDAL.Entities { public class Category { public int Id { get; set; } [Required] [StringLength(200)] public string CategoryName { get; set; } public DateTime CreateDate { get; set; } public virtual ICollection<Blog> Blogs { get; set; } public Category() { Blogs = new HashSet<Blog>(); } } }
在上下文當中寫入下面的代碼:
代碼如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Entity; using BlogAppDAL.Entities; using System.Data.Entity.ModelConfiguration.Conventions; using System.Data.Entity.Migrations; using System.Data.Entity.Infrastructure; namespace BlogAppDAL { public class BlogAppContext : DbContext { public BlogAppContext() : base("name=BlogAppConn") { //自動創建表,如果Entity有改到就更新到表結構 Database.SetInitializer<BlogAppContext>(new MigrateDatabaseToLatestVersion<BlogAppContext, ReportingDbMigrationsConfiguration>()); } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //表名為類名,不是帶s的表名 //移除復數表名的契約 } internal sealed class ReportingDbMigrationsConfiguration : DbMigrationsConfiguration<BlogAppContext> { public ReportingDbMigrationsConfiguration() { AutomaticMigrationsEnabled = true;//任何Model Class的修改將會直接更新DB AutomaticMigrationDataLossAllowed = true; } } public virtual DbSet<Blog> Blogs { get; set; } public virtual DbSet<Category> Categories { get; set; } public virtual DbSet<Comment> Comments { get; set; } public virtual DbSet<Role> Roles { get; set; } public virtual DbSet<User> Users { get; set; } } }
然后運行下程序就更新了數據庫中的表了。而且連Migrations文件夾都不需要了