Ядро Asp.net создает интерфейс для идентификации - PullRequest
2 голосов
/ 24 октября 2019

Я создаю основное веб-приложение asp.net и пытаюсь создать интерфейс для моего контекста БД, чтобы использовать его на уровне логики своего бизнеса. Интерфейс сделан следующим образом:

public interface IAppDbContext
{
    public DbSet<Country> Countries { get; set; }
    public DbSet<City> Cities { get; set; }
    Task<int> SaveChangesAsync(CancellationToken cancellationToken);
}

Реализация интерфейса выглядит следующим образом:

public class AppDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string> , IAppDbContext
    {
        public AppDbContext(DbContextOptions<AppDbContext> options)
            : base(options)
        {

        }

        public DbSet<Country> Countries { get; set; }
        public DbSet<City> Cities { get; set; }
    }

Проблема заключается в том, что, когда я внедряю интерфейс, и я пытаюсь использовать _context.Users это показывает ошибку:

'IAppDbContext' does not contain a definition for 'Users' and no accessible extension method 'Users' accepting a first argument of type 'IAppDbContext' could be found (are you missing a using directive or an assembly reference?).

Я понимаю, что в реализации _context.Users исходит из родительского класса IdentityDbContext, но как я могу также добавить его в интерфейс, чтобы я мог использовать его? Спасибо!

1 Ответ

0 голосов
/ 24 октября 2019

Вы можете добавить пользователей в свой интерфейс. Попробуйте обновить его следующим образом:

public interface IAppDbContext
{
    public DbSet<Country> Countries { get; set; }
    public DbSet<City> Cities { get; set; }
    DbSet<ApplicationUser> Users { get; set; }
    Task<int> SaveChangesAsync(CancellationToken cancellationToken);
}
...