我正在使用EF 6.2。这是针对Oracle 12.1.0.2数据库。
我能够使用以下代码创建索引;但是,当我运行更新数据库并检查索引时,我看到我提供的名称不使用。取而代之的是,该索引似乎是用" ix_tablename_columnname_guid"的默认命名约定命名的。当我尝试退出这些更改时,这也成为一个问题,因为所提供的索引名称也不使用。
我还尝试在数据注释中指定索引(也显示了下面的代码(。
添加性,我尝试将两个代码列为适当的部分,都是无济于事的。我仍然得到一个未命名我想要的索引。
数据注释
[Column(TypeName = "int")]
[Index("IXTest", 1)]
public Int32 PARENT_ID { get; set; }
[Column(TypeName = "int")]
[Index("IXTest", 2)]
public Int32 ACTION_ID { get; set; }
流利的API
modelBuilder.Entity<PARENT_ACTION>()
.HasIndex(e => new { e.PARENT_ID, e.ACTION_ID })
.HasName("IXTest");
以下是运行" add-Ogration ixtest"
后生成的方法 public override void Up()
{
CreateIndex("USER.PARENT_ACTION", new[] { "PARENT_ID", "ACTION_ID" }, name: "IXTest");
}
public override void Down()
{
DropIndex("USER.PARENT_ACTION", "IXTest");
}
,这是使用" update -database -verbose"命令
时记录的SQLbegin
execute immediate
'create index "USER"."IX_PARENT_ACTION_P_1329803955" on "USER"."PARENT_ACTION" ("PARENT_ID", "ACTION_ID")';
exception
when others then
if sqlcode <> -1408 then
raise;
end if;
end;
这是我针对先前的迁移以退出索引更改
时已记录的SQLbegin
execute immediate
'drop index "USER"."IX_PARENT_ACTION_"';
exception
when others then
if sqlcode <> -1418 then
raise;
end if;
end;
我希望使用Fluent API或数据注释,我指定的索引名称将在update-database命令中使用,尤其是因为称为" createIndex"方法并提供了正确的名称。
<。根据这篇文章,它是oracle.manageddataaccess.entityframework的错误。另外,看来此错误尚未修复,因为我正在使用此软件包的最新版本:18.3.0。
oracle.manageddataaccess.entityframework 12.2.1100索引名称/迁移