Невозможно создать DbSet для IdentityUser, поскольку этот тип не включен в модель для контекста. - PullRequest
0 голосов
/ 16 февраля 2019

Попытка всего кода получить всех пользователей с их ролями, поэтому мне пришлось немного изменить свой код и столкнулся с этой ошибкой.Я не уверен, что я сделал не так, я сузил это до своего startup.cs и ApplicationDBContect класса.У меня нет ошибок, и мне может понадобиться миграция, я не сделал этого, чтобы предотвратить возникновение новых проблем.

Я ссылаюсь на Вопрос Stackoverflow и имел другие ошибки.

ApplicationDBContext.cs

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string, IdentityUserClaim<string>,
ApplicationUserRole, IdentityUserLogin<string>,
IdentityRoleClaim<string>, IdentityUserToken<string>>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
       : base(options)
    {
    }
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);

        builder.Entity<ApplicationUserRole>(userRole =>
        {
            userRole.HasKey(ur => new { ur.UserId, ur.RoleId });

            userRole.HasOne(ur => ur.Role)
                .WithMany(r => r.UserRoles)
                .HasForeignKey(ur => ur.RoleId)
                .IsRequired();

            userRole.HasOne(ur => ur.User)
                .WithMany(r => r.UserRoles)
                .HasForeignKey(ur => ur.UserId)
                .IsRequired();
        });
    }

    public DbSet<ApplicationUser> ApplicationUser { get; set; }
}

Startup.cs

services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));

services.AddIdentity<IdentityUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultUI()
            .AddDefaultTokenProviders();

1 Ответ

0 голосов
/ 16 февраля 2019

Я вижу, что вы расширяете IdenityUser и IdentityRole с ApplicationUser и ApplicationRole соответственно, но вы не добавили их в регистрацию службы идентификации.Обновите регистрацию службы идентификации при запуске следующим образом:

services.AddIdentity<ApplicationUser, ApplicationRole>() // </-- here you have to replace `IdenityUser` and `IdentityRole` with `ApplicationUser` and `ApplicationRole` respectively
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultUI()
            .AddDefaultTokenProviders();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...