保存EF Core IdentityDbContext中的更改同步



我正在尝试在ASP.NET核心应用程序中使用实体框架核心标识

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

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而不是IdentityDbContext继承的,则不会出现错误,但要使用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();
}

相关内容

  • 没有找到相关文章

最新更新