我将 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 的标志,我错过了吗?
慕雪6442864
相关分类