繁体   English   中英

以下方法或属性 [ Entity Framework Core ] [ OnModelCreating ] 之间的调用不明确

[英]The call is ambiguous between the following methods or properties [ Entity Framework Core ] [ OnModelCreating ]

我在我的dbcontext class 中使用 EF Core,我已经覆盖了onModelCreating方法以将 class 中的一个属性配置为在 Z9778840A0100CB30C982876741B0B52 服务器中自动递增。

这是我的DbContext class:

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 class 是从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 服务器、Oracle 和 MySQL 合作。

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

请帮助解决这个问题?

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

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

或使用 static 导入:

using static Microsoft.EntityFrameworkCore.OraclePropertyBuilderExtensions;

然后

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

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

(我假设您想保留 Oracle 一个)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM