我正在尝试在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
继承。
我该如何解决?
答案 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();
}