Code-First 数据库初始化策略

原文:http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx

有四种不同的数据库初始化策略:

  1. CreateDatabaseIfNotExists:这是默认的初始值设定项。顾名思义,如果每个配置都不存在,它将创建数据库。但是,如果更改模型类,然后使用此初始化程序运行应用程序,则会引发异常。
  2. DropCreateDatabaseIfModelChanges:如果您的模型类(实体类)已被更改,此初始化程序将删除现有的数据库并创建一个新的数据库。所以,当模型类更改时,您不必担心维护数据库模式。
  3. DropCreateDatabaseAlways:顾名思义,这个初始化器在每次运行应用程序时都会删除一个现有的数据库,而不管你的模型类是否已经改变。当你想要新的数据库,每次运行应用程序,就像在开发应用程序时一样,这将会很有用。
  4. 自定义数据库初始化程序:如果上述任何一个不满足您的要求,或者您想要使用上述初始化程序初始化数据库,您也可以创建自己的自定义初始化程序

要使用上述DB初始化策略之一,必须在Context类中使用Database类设置DB初始值设定项,如下所示:

public class SchoolDBContext: DbContext 
{
        
    public SchoolDBContext(): base("SchoolDBConnectionString") 
    {
        Database.SetInitializer<SchoolDBContext>(new CreateDatabaseIfNotExists<SchoolDBContext>());

        //Database.SetInitializer<SchoolDBContext>(new DropCreateDatabaseIfModelChanges<SchoolDBContext>());
        //Database.SetInitializer<SchoolDBContext>(new DropCreateDatabaseAlways<SchoolDBContext>());
        //Database.SetInitializer<SchoolDBContext>(new SchoolDBInitializer());
    }
    public DbSet<Student> Students { get; set; }
    public DbSet<Standard> Standards { get; set; }
}

  

posted @ 2017-12-12 17:03  caolingyi  阅读(165)  评论(0编辑  收藏  举报