你可能先使用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.更新,成功后将会生成新的数据库
总结:不管我们是自动迁移,还是基于代码的迁移,我们所有的操作都是给类做操作,然后根据类决定是更新,创建,删除数据库(表中的属性),我们不能直接去数据库中删除一个字段,这样就会有问题。
转载code First 迁移 - Sealee - 博客园 (cnblogs.com)
标签:code,数据库,Update,更新,添加,迁移,First From: https://www.cnblogs.com/YanPing1991/p/17095367.html