使用最新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
相关产品推荐
相关产品推荐

