最近在尝试使用ASP.NET core编写一个程序。
主要参考下面的链接:
但是在修改DB字段的时候,发现如果使用code first的方式,数据库总是不能更新,总结下来。如果需要更新DB结构,需要如下步骤:我是在Mac下进行下面操作的。如果是windows环境,可以采用其他方式。
1)删除当前DB(MvcMovie.db),在项目根目录下找到db文件,直接删除;
2)在terminal中,转到当前项目目录,并且删除当前的migration:
cd aspnetcoreapp
dotnet ef migrations remove
3)创建新的migration
dotnet ef migrations add InitialCreate
创建后,
向Migrations目录下的项目添加以下三个文件:
- XXXXXXXXXXXXXX_InitialCreate.cs - 主迁移文件。 包含应用迁移所需的操作(在
Up()
中)和还原迁移所需的操作(在Down()
中)。 - XXXXXXXXXXXXXX_InitialCreate.Designer.cs - 迁移元数据文件。 包含 EF 所用的信息。
- MyContextModelSnapshot.cs--当前模型的快照。 用于确定添加下一迁移时的更改内容
打开这些文件,确认新加的字段已经在文件中存在。
4)更新DB
dotnet ef database update
在Terminal中可以查看生成的SQL,确认新的字段是否包含在SQL中。
如果发现没有包含,只能辛苦重复上述步骤:1)2)3)4)
在Mac中我发现的问题是,即使在3)中的cs文件已经能看到新的字段。在4)中,仍然没有新的字段生成。在这种情况下,只能重复上述的删除->创建的步骤。应该是VS的bug。