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

.NET 5.0+Oracle+ASP.NET Identity分层架构中UseIdentityColumns调用歧义问题

解决EF Core中UseIdentityColumns调用歧义错误

错误原因

你的项目同时引用了Microsoft.EntityFrameworkCore.SqlServer和Oracle.EntityFrameworkCore两个NuGet包,这两个包都提供了同名的UseIdentityColumns扩展方法(分别属于Microsoft.EntityFrameworkCore.SqlServerModelBuilderExtensions和Microsoft.EntityFrameworkCore.OracleModelBuilderExtensions类),编译器无法确定该调用哪一个,因此抛出CS0121歧义错误。

解决方案

方案1:移除SqlServer相关包(推荐)

如果项目仅使用Oracle数据库,直接卸载Microsoft.EntityFrameworkCore.SqlServer及其相关依赖包,编译器会自动匹配Oracle的扩展方法。

方案2:显式指定命名空间调用

若必须保留SqlServer包(特殊场景),需在调用时指定完整命名空间消除歧义:

修改ModelSnapshot中的代码:

modelBuilder
    .HasDefaultSchema("TEST")
    // 显式指定Oracle的ModelBuilder扩展方法
    .Microsoft.EntityFrameworkCore.OracleModelBuilderExtensions.UseIdentityColumns()
    .HasAnnotation("Relational:MaxIdentifierLength", 30)
    .HasAnnotation("ProductVersion", "5.0.1");

属性配置部分修改:

b.Property<int>("Id")
    .ValueGeneratedOnAdd()
    .HasColumnType("NUMBER(10)")
    // 显式指定Oracle的PropertyBuilder扩展方法
    .Microsoft.EntityFrameworkCore.OraclePropertyBuilderExtensions.UseIdentityColumn();

方案3:同步ModelSnapshot文件

修改包引用或代码后,执行以下操作确保快照文件同步:

  • 清理项目:右键项目 → 清理
  • 重新生成项目:右键项目 → 重新生成
  • 若使用EF Core迁移,可执行Add-Migration命令更新快照(注意备份现有迁移文件)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:28:08