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

  

时间: 2024-11-10 03:12:07

Code-First 数据库初始化策略的相关文章

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

原文:http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx 在第一次运行Code-First应用程序后已经创建了一个数据库,但是第二次启动时呢?每次运行应用程序时会创建一个新的数据库吗?生产环境怎么样?更改域模型时,如何更改数据库?要处理这些情况,必须使用一个数据库初始化策略. 有四种不同的数据库初始化策略: CreateDatabaseIfNot

EF CodeFirst简介、默认约定、数据库初始化策略

CodeFirst 工作流程 创建或修改领域类-->使用数据注解或者Fluent API来配置领域类-->使用自动数据库迁移技术或者基于代码的数据库迁移技术来创建数据库. CodeFirst默认约定 约定就是一系列的默认规则,通过这些规则,在使用EF Code-First的时候,可以自动的基于你的领域类配置概念模型.默认约定的命名空间:System.Data.Entity.ModelConfiguration.Conventions; ①schema(模式)  默认情况下,EF会为所有的数据库

Entity Framework(code first)数据库初始化

//1.修改模型,重设数据库 using System.Data.Entity; Database.SetInitializer<LisknoveDataContext>(newDropCreateDatabaseIfModelChanges<LisknoveDataContext>()); //2.修改模型,重设数据库,并初始化数据 using System.Data.Entity; public class LisknoveInitializer:DropCreateDatab

DB Initialization(数据库初始化)[EF Code-First系列]

前面的例子中,我们已经看到了Code-First自动为我们创建数据库的例子. 这里我们将要学习的是,当初始化的时候,Code-First是怎么决定数据库的名字和服务的呢??? 下面的图,解释了这一切!!! 这个图解释了,数据库初始化的流程,是基于我们在上下文类中的构造函数中传递的参数. 在上面的图中,context类中的base构造器中,可以填入下面的参数: 无参数(No Parameter) 数据库的名字(Database Name) 连接字符串的名字(Connection String Na

Entity Framework数据库初始化四种策略

策略一:数据库不存在时重新创建数据库 复制内容到剪贴板 程序代码 Database.SetInitializer<testContext>(new CreateDatabaseIfNotExists<testContext>()); 策略二:每次启动应用程序时创建数据库 复制内容到剪贴板 程序代码 Database.SetInitializer<testContext>(new DropCreateDatabaseAlways<testContext>())

Entity Framework 数据库初始化四种策略

策略一:数据库不存在时重新创建数据库 1 Database.SetInitializer<testContext>(new CreateDatabaseIfNotExists<testContext>()); 策略二:每次启动应用程序时创建数据库 1 Database.SetInitializer<testContext>(new DropCreateDatabaseAlways<testContext>()); 策略三:模型更改时重新创建数据库 1 Dat

EF 创建数据库的策略 codefist加快效率!【not oringin!】

今天去搜寻,ef创建数据库的策略有四种,区分还是和数据库里sql的创建的语句这些英文差不多一致. 一:数据库不存在时重新创建数据库 Database.SetInitializer<testContext>(new CreateDatabaseIfNotExists<testContext>()); 策略二:每次启动应用程序时创建数据库 Database.SetInitializer<testContext>(new DropCreateDatabaseAlways<

EntityFramework Code-First 简易教程(三)-------数据库初始化

现在我们来学习,当数据库初始化的时候,Code First怎样设置数据库的名字. 下面的图显示了数据库初始化的工作流程,根据传入给context基类的构造函数的参数来初始化: 根据上面的图,context基类的构造函数可以传入如下参数: 无参数 参数为数据库名称 参数为连接字符串 无参数的构造函数: 如果不传参数给context基类的构造函数,它就会在我们本地创建一个以{命名空间}.{Context类名}为名字的数据库.比如下面代码会创建一个名字为SchoolDataLayer.Context的

MVC VS2012 Code First 数据库迁移教程

1.在"服务资源管理器"连接数据库 2.打开工具-Nuget程序包管理器"程序包管理器控制台" 3.控制台输入命令:PM> Enable-Misgrations 4.以项目MvcGuestbook.Models.MvcGuestbookContext为例: PM> Enable-Misgrations-ContextTypeName MvcGuestbook.Models.MvcGuestbookContext 5.更新数据库:PM>Update-