我将 netcoreapp 2.1 与 EF Core 2.1 一起使用,并通过数据迁移更新我的数据库,但在重命名表时遇到了问题。我在这里的主要问题是一个表(以及后来可能的列)可能会用数据多次重命名,我希望能够在保持这些数据完整的同时重命名它们,但从我读过的内容来看,这些迁移似乎只关心保持架构是最新的。此问题类似于使用 Entity Framework Core 2.0 在不丢失数据的情况下更改或重命名列名,但由于我的过程是自动化的,我需要能够使用 dotnet.exe 在命令行上使用迁移本身来执行此操作。为此,我将下面的参数传递给 dotnet.exe,构建解决方案,从 DLL 获取数据库上下文,然后使用下面的行运行迁移。ef migrations add "someMigrationName"...并更新数据库var migrator = dbContext.Database.GetService<IMigrator>();migrator.Migrate();例如,如果名为“Courases”的表开始收集数据,我需要能够将其重命名为“Courses”而不影响数据,但是目前以下是迁移中生成的 Up 函数。protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "Courases"); migrationBuilder.CreateTable( name: "Courses", columns: table => new { Id = table.Column<Guid>(nullable: false), ConcurrencyCheck = table.Column<byte[]>(nullable: true) }, constraints: table => { table.PrimaryKey("PK_Courses", x => x.Id); }); }从我读过的内容来看,似乎无法通过重命名而不是删除和重新创建表来生成迁移,但这似乎很疯狂,有没有办法做到这一点/是否有我可以传递给 dotnet.exe 的标志,我错过了吗?
2 回答
![?](http://img1.sycdn.imooc.com/545847f50001126402200220-100-100.jpg)
慕雪6442864
TA贡献1812条经验 获得超5个赞
我在使用dotnet ef migrations add
命令的EF Core 5.0 中遇到了同样的问题。它想删除表并重新创建它们,这意味着我将丢失所有数据。
我试图添加一个新表并重命名其中的一些。它显然不喜欢那样,我把它分成 2 次迁移。首先我添加了新表,然后我重命名了其他表。
- 2 回答
- 0 关注
- 187 浏览
添加回答
举报
0/150
提交
取消