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

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

 

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

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

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

code First  迁移

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

code First  迁移

 

 

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

code First  迁移

code First  迁移

 

code First  迁移

 

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

 code First  迁移

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

 

②基于代码的迁移

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

 

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

code First  迁移

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

code First  迁移

 code First  迁移

2,设置数据库初始化

code First  迁移

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

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

 code First  迁移

code First  迁移

code First  迁移

 

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

 code First  迁移

 

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

 code First  迁移

 

5,如果需要更新字段

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

code First  迁移

 

 code First  迁移

code First  迁移

 code First  迁移

code First  迁移    code First  迁移

 

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,启用

code First  迁移

code First  迁移

code First  迁移

2,添加

code First  迁移

code First  迁移

 

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

 code First  迁移

 

 迁移第二个

 1,启用

 code First  迁移

code First  迁移

code First  迁移

 

 2,添加

  code First  迁移

code First  迁移

 

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

code First  迁移

 

 

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

   

 

相关文章:

  • 2022-12-23
  • 2022-01-16
  • 2022-01-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-16
猜你喜欢
  • 2021-04-07
  • 2021-06-28
  • 2021-10-03
  • 2022-12-23
  • 2022-02-22
  • 2021-08-26
相关资源
相似解决方案