以下方法或属性之间的调用不明确 [Entity Framework Core ] [OnModelCreating]
The call is ambiguous between the following methods or properties [ Entity Framework Core ] [ OnModelCreating ]
我在我的 dbcontext
class 中使用 EF Core 我已经重写了 onModelCreating
方法来将 class 中的一个 属性 配置为自动-在 SQL 服务器中增加。
这是我的 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
The call is ambiguous between the following methods or properties: 'Microsoft.EntityFrameworkCore.OraclePropertyBuilderExtensions.UseIdentityColumn(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder, int, int)' and 'Microsoft.EntityFrameworkCore.SqlServerPropertyBuilderExtensions.UseIdentityColumn(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder, int, int)'
Error Screenshot 1
Error Screenshot 2
附加信息
我在我的解决方案中引用了另一个项目这个项目将起到存储库的作用,他准备与SQL服务器、Oracle和MySQL一起工作。
我依赖的项目是我自己的项目,而且是开源的that is the repository link
请帮忙解决这个问题?
我猜你不能只删除两个有问题的使用之一。
由于这些方法是扩展方法(因此是静态方法),您可以将它们用作静态方法:
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 那个)
我在我的 dbcontext
class 中使用 EF Core 我已经重写了 onModelCreating
方法来将 class 中的一个 属性 配置为自动-在 SQL 服务器中增加。
这是我的 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
The call is ambiguous between the following methods or properties: 'Microsoft.EntityFrameworkCore.OraclePropertyBuilderExtensions.UseIdentityColumn(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder, int, int)' and 'Microsoft.EntityFrameworkCore.SqlServerPropertyBuilderExtensions.UseIdentityColumn(Microsoft.EntityFrameworkCore.Metadata.Builders.PropertyBuilder, int, int)'
Error Screenshot 1
Error Screenshot 2
附加信息
我在我的解决方案中引用了另一个项目这个项目将起到存储库的作用,他准备与SQL服务器、Oracle和MySQL一起工作。
我依赖的项目是我自己的项目,而且是开源的that is the repository link
请帮忙解决这个问题?
我猜你不能只删除两个有问题的使用之一。 由于这些方法是扩展方法(因此是静态方法),您可以将它们用作静态方法:
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 那个)