【发布时间】:2021-06-07 16:17:33
【问题描述】:
我使用 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)'
其他信息
我在我的解决方案中引用了另一个项目,这个项目将扮演存储库的角色,并且他准备使用 SQL Server、Oracle 和 MySQL。
我依赖的项目是我自己的项目,开源的that is the repository link
请帮忙解决这个问题?
【问题讨论】:
-
不知道为什么这个问题被否决了。显然这不是 OP 代码的缺陷,而是 EF Core 设计的缺陷。只要您添加对具体数据库提供程序的引用,它们就会使用通用命名空间和扩展方法。最初,该指南曾经是提供者为其自己的特定扩展方法加上其名称的前缀,例如
ForSqlServerXyz、ForMySqlXyz、ForOracleXyz等,这很好。然后他们决定删除前缀并使用通用名称,这就是结果。人们真的应该去他们的 GitHub 报告/抱怨这些事情。
标签: c# entity-framework-core asp.net-identity dbcontext