.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
相关产品推荐
相关产品推荐

