SaveChangesAsync в EF Core IdentityDbContext - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь использовать Entity Framework Core Identity в приложении ASP.NET Core

Я создал контекст базы данных и его интерфейс следующим образом:

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 не появится, но для использования идентификатора она должна быть унаследована от IdentityDbContext.

Как мне обойти это?

1 Ответ

0 голосов
/ 30 ноября 2018

Это странно, потому что эта ошибка должна отображаться в обоих случаях.В любом случае, 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();
}
...