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 是从 IdentityDbContext
的 DbContext
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();
}
我正在尝试在 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 是从 IdentityDbContext
的 DbContext
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();
}