EF Core IdentityDbContext中的SaveChangesAsync

时间:2018-11-30 05:07:32

标签: c# .net-core asp.net-identity entity-framework-core

我正在尝试在ASP.NET Core应用程序中使用Entity Framework Core Identity

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

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'未实现接口成员   'IAppDbContext.SaveChangesAsync()'

如果AppDbContext是从DbContext的{​​{1}}继承而来的,则不会出现错误,但是要使用Identity,它应该从IdentityDbContext继承。

我该如何解决?

1 个答案:

答案 0 :(得分:3)

这很奇怪,因为在两种情况下都应显示此错误。无论如何,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();
}