Code-First 数据库初始化策略

Posted caolingyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; }
}

  

以上是关于Code-First 数据库初始化策略的主要内容,如果未能解决你的问题,请参考以下文章

译第31节---数据库初始化策略

20.翻译系列:Code-First中的数据库迁移技术EF 6 Code-First系列

EF Code-First 学习之旅 数据库初始化

EF Code-First 学习之旅 数据库初始化

20.2.翻译系列:EF 6中基于代码的数据库迁移技术EF 6 Code-First系列

Code-First 迁移问题