首页 > 其他分享 >code First 迁移

code First 迁移

时间:2023-02-06 14:59:40浏览次数:48  
标签:code 数据库 Update 更新 添加 迁移 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.更新,成功后将会生成新的数据库

 

 

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

转载code First 迁移 - Sealee - 博客园 (cnblogs.com)

标签:code,数据库,Update,更新,添加,迁移,First
From: https://www.cnblogs.com/YanPing1991/p/17095367.html

相关文章

  • [LeetCode] 2452. Words Within Two Edits of Dictionary
    Youaregiventwostringarrays, queries and dictionary.AllwordsineacharraycompriseoflowercaseEnglishlettersandhavethesamelength.Inone edi......
  • 【LeetCode】2331. 计算布尔二叉树的值
    classSolution{public:boolevaluateTree(TreeNode*root){returndfs(root);}booldfs(TreeNode*root){switch(root->val){......
  • Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT C. Another Array
    题目链接:https://codeforces.com/problemset/problem/1763/C   大致题意: 给你长度为n的数组,你可以进行任意次操作,操作内容如下:选择俩个下标i,j;对于i......
  • 回文数(LeetCode)
    题目测试样例思路如果这道诶就当成一个数字来做的话,其实很简单;看题目要求,很容易知道;负数都不是回文数,0是回文数,;然后在对整数加以判断就好只需将整数逆序然后......
  • css中文字体和Unicode编码转换方法
    在网站中,都不可避免的要用到一些中文字体,比如宋体,微软雅黑,黑体等,在css中写入中文的方法一般是:font-family:"微软雅黑","黑体";这样类似的表达方式。css样式文件也区分文......
  • Codeforces Round #849 (Div. 4)
    A.CodeforcesChecking题意每个案例给一个字符,如果在”codeforces“中出现过,输出YES,否则输出NOcode/***@author:Changersh*@date:2023/2/322:37*/i......
  • SQL Server数据库复制迁移
    当需要将一台机器(源机器)上的一个数据库完全复制到另一台机器(目标机器)上时,可以选择先在源机器上备份该数据库,然后在目标机器上还原该备份的方法。方法/步骤 ......
  • [LeetCode] 2331. Evaluate Boolean Binary Tree
    Youaregiventhe root ofa fullbinarytree withthefollowingproperties:Leafnodes haveeitherthevalue 0 or 1,where 0 represents False and......
  • Codeforces Round #236 (Div. 2) E - Strictly Positive Matrix
    根据线性代数的知识可知邻接矩阵自乘相当于做floyed把输入转化为01矩阵(显然>1的数和1是等价的)得到邻接矩阵问是否存在k次后所有数都为正数等价为自乘k次后所有点两两可......
  • 动画学leetcode算法!分享iOSApp算法宝开发过程中的一些想法!
    初来乍到,很喜欢这里的分享氛围,观摩了很多大佬的文章,也分享下自己刚开发的一款App:算法宝。在算法宝App里一共制作了70个leetcode算法动画。目前全部免费,无广告。目前只支持......