使用Fluent API .hasindex().hasname()不起作用的代码首先迁移



我正在使用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"命令

时记录的SQL
begin
  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;

这是我针对先前的迁移以退出索引更改

时已记录的SQL
begin
  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索引名称/迁移

相关内容

  • 没有找到相关文章

最新更新