在使用EF Code First的时候可以通过代码自动生成数据库,然而一般系统生成的数据库需要有初始数据
在继承DbContext类中覆盖默认CreateDatabaseIfNotExists策略
public Db()
: base("name = DynamicForm") // 这里的name必须和Web.config里面的相同
{
//那么无论什么时候更新实体模型,EF都会自动地更新数据库模式。这里很重要的一点是,这种策略更新数据库模式不会丢失数据,或者是在已有的数据库中更新已存在的数据库对象。
// 覆盖默认的CreateDatabaseIfNotExists初始器
// 需要两个参数,第一个参数为继承DbContext的类, 第二个参数为Migrations中的配置类
Database.SetInitializer<Db>( new MigrateDatabaseToLatestVersion<Db,Migrations.Configuration>() );
}
Migrations.Configuration
public Configuration()
{
AutomaticMigrationsEnabled = true; // 自动迁移
ContextKey = "RestfulDynamicForm.Models.Db";
}
这里的目的是当更改数据库结构的时候,直接在原有数据库保存数据的前提下更新结构,
首先创建一个类名为DatabaseInitializer