You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用最新NuGet包时EF Core Oracle Scaffold-DbContext未生成索引名

解决Oracle.EntityFrameworkCore 7.x脚手架生成空索引名的问题

针对你遇到的.NET 6类库中,使用Oracle.EntityFrameworkCore 7.21.12版本执行Scaffold-DbContext后HasIndex索引名为空的问题,提供以下几种可行方案:

  • 手动补全索引名:
    生成代码后,从Oracle数据库中查询对应表的索引信息,用这条SQL获取实际索引名:

    SELECT index_name, table_name, column_name 
    FROM all_ind_columns 
    WHERE table_name = '你的表名' 
    ORDER BY index_name, column_position;
    

    然后在ModelContext的HasIndex方法中补充HasName指定索引名,示例:

    entity.HasIndex(e => e.YourColumnName)
          .HasName("IDX_ACTUAL_INDEX_NAME");
    
  • 回退到稳定兼容版本:
    既然你测试过Oracle.EntityFrameworkCore 6.21.5 + EF Core工具6.0.1的组合能正常生成索引名,暂时回退到该版本组合是最省心的方案,完全适配你的.NET 6项目,避免新版本的未知bug。

  • 更新到Oracle EF Core最新补丁版本:
    这个问题大概率是Oracle.EntityFrameworkCore 7.21.12版本的脚手架bug,尝试更新到该系列的最新补丁版本(比如7.21.13及以上),Oracle可能已经修复了索引名生成的问题,更新后重新执行脚手架命令。

  • 调整脚手架命令参数:
    可以先执行不带索引的脚手架生成,之后手动添加带名称的索引,命令示例:

    Scaffold-DbContext "你的Oracle连接字符串" Oracle.EntityFrameworkCore -OutputDir Models -NoIndexes
    

内容的提问来源于stack exchange,提问作者manojmore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 09:42:45