EF Code First Model字段改變數據庫的字段也跟着自動改變 public class Context:DbContext { public Context():base("UserDB") { //自動創建表,如果Entity有改到就更新到表結構 Database.SetInitializer<Context>(new MigrateDatabaseToLatestVersion<Context, ReportingDbMigrationsConfiguration>()); } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); //modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();//這句是不要將EF生成的sql表名不要被復數 就是表名后面不要多加個S } internal sealed class ReportingDbMigrationsConfiguration : DbMigrationsConfiguration<Context> { public ReportingDbMigrationsConfiguration() { AutomaticMigrationsEnabled = true;//任何Model Class的修改將會直接更新DB AutomaticMigrationDataLossAllowed = true; } } public DbSet<UserInfo> UserInfo { get; set; }
//數據庫不存在時重新創建數據庫 Database.SetInitializer(new CreateDatabaseIfNotExists<DbContext>()); //每次啟動應用程序時創建數據庫 Database.SetInitializer(new DropCreateDatabaseAlways<DbContext>()); //模型更改時重新創建數據庫 Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DbContext>()); //從不創建數據庫 Database.SetInitializer<DbContext>(null);