使用“代码优先”模式构建基本类后,项目开始成功构建和运行,并自动生成数据库表结构。
但是我有新的类要加入,有字段要修改,怎么办?删除数据库然后逃跑?哈哈的笑
使用数据库迁移,不会改变原来的结构,而是操作新创建的类创建一个单独的表,或者改变现有的数据库表,然后修改表。
迁移步骤:
1.打开包管理器控制台:工具-NuGet包管理器-包管理器控制台。(当然,还有其他打开它的方法。我更喜欢这个。)
单击以弹出包管理器控制台
最需要注意的是默认项目!
2.开始数据库迁移,并执行命令:启用-迁移
因为Models不一定直接使用项目中的现有文件夹Models,所以当您选择启动项目作为ASP.NET MVC框架类型时,这里会报告一个错误
具体来说,看看我当前项目的分布情况:
我分离了模型,这样当我默认选择SearchEngine作为启动项目时,在包管理器控制台中输入的第一个命令将报告一个错误
解决方案:选择默认项目,并选择它作为DbContext所在的项目。我在这里是班级图书馆
操作成功会提示如下:
迁移目录被添加到数据库上下文同级目录下
3.启动数据库迁移命令
1.添加-迁移[自定义版本名称]
输入add-migrationupdateorderheader
2 .更新-数据库
输入更新-数据库
在这里,如果你像我一样分离了DbContext,你需要注意它。您需要将数据库的连接地址添加到当前类库的配置文件中
如果在ASP.NET的MVC框架中直接将数据库上下文添加到模型中,就没有必要在网络中读取连接字符串。直接配置文件。
等待命令执行.
出问题了
开始在我的电脑中寻找SQL Server配置管理。如果有,打开它,找到它
您可以将TCP/IP协议配置为已启用。
我在本地没有这个工具,只能通过以下方式找到
在我的电脑上点击右键-管理-服务和应用-SQLServer配置管理器(这个工具我没有找到两次,好像是直接从这里解决的)
重新输入命令并等待执行
初步成功
因为数据库中的一些表不需要更改
我们可以在迁移目录中更改需要添加或修改的特定表
通过修改CreateTable/DropTable,您可以控制需要更改哪些表
命名空间SAssassin。模型迁移{使用系统;使用系统。数据、实体、迁移;公共分部类updateorderheader : DBmigration { public override void Up(){ create table(' dbo。MyFileInfoes ',c=new { Id=c . Int(null able : false,identity: true),FileName=c.String(),FileDescription=c.String(),FilePath=c.String(),file type=c . Byte(null able : false),FileSize=c.String(),FileStatus=c . Byte(null able : false),IsPublic=c . Byte(null able : false),UserId=c.String(),UserId=c . String(),UserName=c.String(),CreateDate=primary key(t=t . Id);}公共覆盖void Down() { DropTable('dbo。my fileinfoes’);} }}4.修改代码配置,实现后的操作就没那么麻烦了
修改迁移目录中的Configuration.cs文件,并开始自动迁移
5.将以下代码行添加到项目的Application_Start中:
系统。数据。实体。数据库。设置初始化器(新系统数据。实体。迁移的tabasetlatestversions刺客。英孚。模型.代码第一,SAssassin .英孚。模特。迁徙。configuration());到此,数据库迁移工作已经完毕了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。