Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 在实体框架核心中更改带有索引的列 版本_Entity Framework_Entity Framework Core - Fatal编程技术网

Entity framework 在实体框架核心中更改带有索引的列 版本

Entity framework 在实体框架核心中更改带有索引的列 版本,entity-framework,entity-framework-core,Entity Framework,Entity Framework Core,SQL引擎:MS SQL EF核心包版本: "Microsoft.EntityFrameworkCore": "1.0.1", "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1", "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 问题 我已经更改了现有列,该列上有索引,并在前面创建了几个迁移: // ... other changes migrationBuilder

SQL引擎:MS SQL

EF核心包版本:

"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");
我已将其从可选更改为必需(不可为null)。 实体框架核心生成了这样的迁移:

// ... other changes
migrationBuilder.AlterColumn<Guid>(
    name: "OrganisationToId",
    table: "Interactions",
    nullable: false);
/。。。其他变化
migrationBuilder.AlterColumn(
名称:“OrganizationToId”,
表:“互动”,
可为空: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");
//在更改列之前删除索引
migrationBuilder.DropIndex(名称:“IX_Interactions_OrganizationToId”,表:“Interactions”);
//真变柱
migrationBuilder.AlterColumn(
名称:“OrganizationToId”,
表:“互动”,
可为空:false);
//恢复索引
migrationBuilder.CreateIndex(
名称:“IX_Interactions_OrganizationToId”,
表:“互动”,
栏目:“组织ID”);

这在EFCore 1.1.0中已修复。见问题