code First 迁移

你可能先使用code First先生成了上下文,然后添加了一些数据进去,这个时候你想再其中的某一个类加几个字段,但你想继续保留在数据库中的数据。因为这个时候之前的那几个初始化并不能完成我们的需求。这个时候需要使用代码迁移。

专业术语:代码迁移,用来解决数据库更新问题。

 

①自动更新     可以添加一个一个类,添加属性,删除属性,删除类

注:所以的操作我们都是根据类来更新数据库噢,请不要直接去修改数据库,不然就会报错

 1,先需要打开   程序包管理控制台

2,输入指令 enable-migrations –EnableAutomaticMigration:$true  

 

 

完成之后会在我们的项目中自动生成一个Configuration类

 

 

3,修改我们的数据初始化

 

运行项目,数据库就会跟着更新了。

 

②基于代码的迁移

基于代码的迁移提供了对迁移的更多控制,并允许您配置其他内容,例如设置列的默认值,配置计算列等。自动更新就不能设置添加列默认值。

 

 1,打开我们的程序包控制台,输入:enable-migrations

完成之后会生成我们的  configuration文件

 

2,设置数据库初始化

3,完成迁移,我们这里需要两个步骤

  1.Add-Migration命令创建迁移类

 

 

 2.  Update-Database  –verbose 更新数据库   -verbose可以显示创建的SQL语句

 

 

 4,刷新数据库,根据类创建的数据库已经生成

 

 

5,如果需要更新字段

先在类里面创建一个新列,然后重复第③步

 

 

 

    

 

6,你想修改表,删除表,添加表,都先把代码写好,然后执行第③步更新数据库就可以了

 

指令:Update-Database -TargetMigration 指定将数据库更新到哪个迁移的名称。 

  例如:Update-Database -TargetMigration:Schoolv1

 


如果一个项目存在多个上下文原来的方法就不行了,这个时候需要明确一点

enable-migrations -ContextTypeName <DbContext-Name-with-Namespaces> -MigrationsDirectory:<Migrations-Directory-Name>  //启用
Add-Migration -configuration <DbContext-Migrations-Configuration-Class-with-Namespaces> <Migrations-Name>  //添加
Update-Database -configuration <DbContext-Migrations-Configuration-Class-with-Namespaces> -Verbose  //更新

 

 演示效果:

 迁移第一个:

 1,启用

2,添加

 

 3,更新,成功后数据库将被创建

 

 

 迁移第二个

 1,启用

 

 

 2,添加

  

 

 3.更新,成功后将会生成新的数据库

 

 

总结:不管我们是自动迁移,还是基于代码的迁移,我们所有的操作都是给类做操作,然后根据类决定是更新,创建,删除数据库(表中的属性),我们不能直接去数据库中删除一个字段,这样就会有问题。

   

 

posted @ 2018-03-20 17:25  Sealee  阅读(184)  评论(0编辑  收藏  举报