C# EF創建及更新數據庫 Database.SetInitializer用法


 
         
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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM