首页 > 解决方案 > 以下方法或属性 [ Entity Framework Core ] [ OnModelCreating ] 之间的调用不明确

问题描述

我使用 EF Core,在我的dbcontext类中,我重写了onModelCreating将类中的一个属性配置为在 SQL Server 中自动递增的方法。

这是我的DbContext课:

public class AppDbContext:IdentityDbContext<AppUser>
{
    public AppDbContext(DbContextOptions options) : base(options)
    {
    }

    public AppDbContext()
    {
    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);

        builder.Entity<Service>()
               .Property(service => service.ID)
               .UseIdentityColumn(1, 1);
    } 

    public virtual DbSet<AppUser> AppUsers { get; set; }
    public virtual DbSet<Service> Services { get; set; }
}

如果你注意到我的DbContext类是继承自IdentityDbContext因为我使用身份。

问题:我收到此错误:

CS0121
以下方法或属性之间的调用不明确:“Microsoft.EntityFrameworkCore.OraclePropertyBuilderExtensions.UseIdentityColumn(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder, int, int)”和“Microsoft.EntityFrameworkCore.SqlServerPropertyBuilderExtensions.UseIdentityColumn(Microsoft.EntityFrameworkCore. Metadata.Builders.PropertyBuilder, int, int)'

错误截图 1

错误截图 2

附加信息

我在我的解决方案中引用了另一个项目,这个项目将扮演存储库的角色,并且他准备使用 SQL Server、Oracle 和 MySQL。

我所依赖的项目是我自己的项目,它是开源的,即存储库链接

请帮助解决这个问题?

标签: c#entity-framework-coreasp.net-identitydbcontext

解决方案


我想你不能只删除两个有问题的使用之一。由于这些方法是扩展方法(所以是静态方法),您可以将它们用作静态方法:

Microsoft.EntityFrameworkCore.OraclePropertyBuilderExtensions.UseIdentityColumn(builder.Entity<Service>().Property(service => service.ID), 1, 1);

或使用静态导入:

using static Microsoft.EntityFrameworkCore.OraclePropertyBuilderExtensions;

然后

UseIdentityColumn(builder.Entity<Service>().Property(service => service.ID), 1, 1)

我知道它不如流畅的书写方式漂亮,但我认为如果你需要所有的使用方式,我认为没有其他选择。

(我假设你想保留 Oracle 的)


推荐阅读