EF Core IdentityDbContext 中的 SaveChangesAsync

SaveChangesAsync in EF Core IdentityDbContext

我正在尝试在 ASP.NET 核心应用程序中使用 Entity Framework 核心身份

我已经创建了数据库上下文及其接口,如下所示:

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

    public DbSet<AppUser> AppUser { get; set; }

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

public interface IAppDbContext
{
    DbSet<AppUser> AppUser { get; set; }

    int SaveChanges();
    Task<int> SaveChangesAsync();
}

这里的问题是,它在 AppDbContext 中显示错误,指出

'AppDbContext' does not implement interface member 'IAppDbContext.SaveChangesAsync()'

如果 AppDbContext 是从 IdentityDbContextDbContext insted 继承的,则不会出现错误,但要使用 Identity,它应该从 IdentityDbContext 继承。

我该如何解决这个问题?

这很奇怪,因为在这两种情况下都应显示此错误。无论如何,DbContext 没有方法:

Task<int> SaveChangesAsync()

它有方法:

Task<int> SaveChangesAsync(CancellationToken cancellationToken = default(CancellationToken))

要绕过这种情况,您应该包装 DbContext.SaveChangesAsync 方法:

public class AppDbContext : IdentityDbContext<AppUser>, IAppDbContext
{
    ...

    public Task<int> SaveChangesAsync() => base.SaveChangesAsync();
}