gpt4 book ai didi

entity-framework - 在 Entity Framework Core 中更改带有索引的列

转载 作者:行者123 更新时间:2023-12-04 12:49:50 26 4
gpt4 key购买 nike

版本

SQL 引擎: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");

我已将其从可选更改为必需(不可为空)。
Entity Framework Core 生成了这样的迁移:
// ... other changes
migrationBuilder.AlterColumn<Guid>(
name: "OrganisationToId",
table: "Interactions",
nullable: false);

但是你不能改变有索引的列。不幸的是,EF Core 不支持将字段更改为不可为空的情况。

重命名字段时 - 就像一个魅力一样,在重命名之前简单地删除索引并在更改后恢复它。



有什么方法可以配置 EF Core,他将涵盖这种情况并生成正确的迁移?

最佳答案

目前我已经修改了迁移并在更改列之前删除了索引,并在操作后手动恢复它。

它完成了任务。

// 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");

关于entity-framework - 在 Entity Framework Core 中更改带有索引的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40667605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com