Jam*_*son 5 c# ef-migrations .net-core ef-core-2.1
我正在将netcoreapp 2.1与EF Core 2.1一起使用,并通过数据迁移来更新数据库,但是重命名表时遇到了问题。我在这里的主要问题是一个表(以及以后可能的列)可能会多次使用数据重命名,并且我希望能够重命名它们,同时保持数据完整,但据我看来,这些迁移似乎只涉及保持最新的架构。
此问题类似于使用Entity Framework Core 2.0更改或重命名列名而不会丢失数据,但是由于我的过程是自动化的,因此我需要能够使用dotnet.exe在命令行上使用迁移本身来做到这一点。
为此,我将下面的参数传递给dotnet.exe,构建解决方案,从DLL获取数据库上下文,然后使用下面的代码行进行迁移。
ef migrations add "someMigrationName"
Run Code Online (Sandbox Code Playgroud)
...并更新数据库
var migrator = dbContext.Database.GetService<IMigrator>();
migrator.Migrate();
Run Code Online (Sandbox Code Playgroud)
例如,如果名为“ 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);
});
}
Run Code Online (Sandbox Code Playgroud)
根据我的阅读,似乎没有办法用重命名的表而不是删除并重新创建表来生成迁移,但这似乎很疯狂,有没有办法做到这一点/是否有可以传递给dotnet.exe的标志,错过了吗?
您可以调用 migrationBuilder.RenameTable("Old", null, "New");
| 归档时间: |
|
| 查看次数: |
3047 次 |
| 最近记录: |