作者:16_阿PIE覀_295 | 来源:互联网 | 2023-01-04 14:08
前一段时间在学习ASP.NETMVC,由于没有安装SqlServer选择了比较小型的mysql数据库,在使用CodeFirst更新数据库时出现了错误,一度不知道怎么回事,在网上查找了相关资料才知
前一段时间在学习ASP.NET MVC,由于没有安装SqlServer选择了比较小型的mysql数据库,在使用CodeFirst更新数据库时出现了错误,一度不知道怎么回事,在网上查找了相关资料才知道原因是因为ASP.NET默认更新数据库时使用的是SqlServer的框架,所以用mysql时就出现了无法更新的现象。
首先说一下怎么开启迁移数据库,工具->NuGet包管理器->程序包管理控制台
在程序包管理控制台中输入Enable-Migrations,如果有多个Context需要选择。
![](https://www.#.com/go/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwNjE3MTYyMDE2MDM2P3dhdGVybWFyay8yL3RleHQvYUhSMGNEb3ZMMkpzYjJjdVkzTmtiaTV1WlhRdmMybGpZWFZmZEdGdmVtaz0vZm9udC81YTZMNUwyVC9mb250c2l6ZS80MDAvZmlsbC9JMEpCUWtGQ01BPT0vZGlzc29sdmUvNzAvZ3Jhdml0eS9DZW50ZXI=)
选择其中一个,然后修改你的模型,按Ctrl+Shift+B就行编译。编译之后在程序包管理控制台中输入Add-Migration AddStudent(这里的AddStudent是名称,可以随意)。这时在你的项目资源管理器里面就会多两个文件,一个是Migrations的配置文件,另一个就是更新数据库所执行操作的文件。
![](https://www.#.com/go/)
如果你是mysql数据库打开AddStuden这个文件如下
public override void Up()
{
AddColumn("dbo.Students", "UserName", c => c.String(unicode: false));
}
public override void Down()
{
AddColumn("dbo.Students", "UsreName", c => c.String(unicode: false));
}
上面是当数据模型更改之后自动生成的更新数据库的代码,而此时我使用的是mysql并不是sqlserver,所以只需要将表的前缀(dbo.)删除就可以了。dbo是sqlserver所特有的。
修改之后在程序包管理控制台中输入update-database即可更新数据库。