SQL enginie:MS SQL。
EF Core软件包版本:
"Microsoft.EntityFrameworkCore": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
我已经更改了现有列,其上有索引,之前创建了一些迁移:
// ... other changes
migrationBuilder.CreateIndex(
name: "IX_Interactions_OrganisationToId",
table: "Interactions",
column: "OrganisationToId");
我已将它从可选更改为必需(不可为空)。 实体框架核心生成了这样的迁移:
// ... other changes
migrationBuilder.AlterColumn<Guid>(
name: "OrganisationToId",
table: "Interactions",
nullable: false);
但是你不能改变有索引的列。不幸的是,在将字段更改为非可空的情况下,EF Core不支持此功能。
重命名字段时 - 像魅力一样工作,在重命名之前只需删除索引并在更改后恢复它。
有没有办法配置EF Core,他将覆盖这种情况并生成正确的迁移?
答案 0 :(得分:2)
目前我修改了迁移并在更改列之前删除了索引,并在操作后手动恢复它。
它完成了这项工作。
// drop index before altering column
migrationBuilder.DropIndex(name: "IX_Interactions_OrganisationToId", table: "Interactions");
// actually altering column
migrationBuilder.AlterColumn<Guid>(
name: "OrganisationToId",
table: "Interactions",
nullable: false);
// restore index
migrationBuilder.CreateIndex(
name: "IX_Interactions_OrganisationToId",
table: "Interactions",
column: "OrganisationToId");