Невозможно использовать таблицу "AspNetUserRoles" для типа сущности
"IdentityUserRole", поскольку она используется для типа сущности
"AspNetUserRole (Dictionary)" и, возможно, для других
типов сущностей, но связующих отношений нет. Добавьте внешний ключ
в «IdentityUserRole» в свойствах первичного ключа и
указав на первичный ключ в другом типе сущности, сопоставленном с
«AspNetUserRoles».
Я использую подход «сначала база данных». Пожалуйста, найдите мой файл контекста БД ниже: -
Код: Выделить всё
public partial class EmployeeContext : IdentityDbContext
{
public EmployeeContext()
{
}
public EmployeeContext(DbContextOptions options)
: base(options)
{
}
public virtual DbSet AspNetRoles { get; set; }
public virtual DbSet AspNetRoleClaims { get; set; }
public virtual DbSet AspNetUsers { get; set; }
public virtual DbSet AspNetUserClaims { get; set; }
public virtual DbSet AspNetUserLogins { get; set; }
public virtual DbSet AspNetUserTokens { get; set; }
public virtual DbSet TblEmployeeSalaries { get; set; }
public virtual DbSet Tblemployees { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity(entity =>
{
entity.HasIndex(e => e.NormalizedName, "RoleNameIndex")
.IsUnique()
.HasFilter("([NormalizedName] IS NOT NULL)");
entity.Property(e => e.Name).HasMaxLength(256);
entity.Property(e => e.NormalizedName).HasMaxLength(256);
});
modelBuilder.Entity(entity =>
{
entity.HasIndex(e => e.RoleId, "IX_AspNetRoleClaims_RoleId");
entity.HasOne(d => d.Role).WithMany(p => p.AspNetRoleClaims).HasForeignKey(d => d.RoleId);
});
modelBuilder.Entity(entity =>
{
entity.HasIndex(e => e.NormalizedEmail, "EmailIndex");
entity.HasIndex(e => e.NormalizedUserName, "UserNameIndex")
.IsUnique()
.HasFilter("([NormalizedUserName] IS NOT NULL)");
entity.Property(e => e.Email).HasMaxLength(256);
entity.Property(e => e.NormalizedEmail).HasMaxLength(256);
entity.Property(e => e.NormalizedUserName).HasMaxLength(256);
entity.Property(e => e.UserName).HasMaxLength(256);
entity.HasMany(d => d.Roles).WithMany(p => p.Users)
.UsingEntity(
"AspNetUserRole",
r => r.HasOne().WithMany().HasForeignKey("RoleId"),
l => l.HasOne().WithMany().HasForeignKey("UserId"),
j =>
{
j.HasKey("UserId", "RoleId");
j.ToTable("AspNetUserRoles");
j.HasIndex(new[] { "RoleId" }, "IX_AspNetUserRoles_RoleId");
});
});
modelBuilder.Entity(entity =>
{
entity.HasIndex(e => e.UserId, "IX_AspNetUserClaims_UserId");
entity.HasOne(d => d.User).WithMany(p => p.AspNetUserClaims).HasForeignKey(d => d.UserId);
});
modelBuilder.Entity(entity =>
{
entity.HasKey(e => new { e.LoginProvider, e.ProviderKey });
entity.HasIndex(e => e.UserId, "IX_AspNetUserLogins_UserId");
entity.HasOne(d => d.User).WithMany(p => p.AspNetUserLogins).HasForeignKey(d => d.UserId);
});
modelBuilder.Entity(entity =>
{
entity.HasKey(e => new { e.UserId, e.LoginProvider, e.Name });
entity.HasOne(d => d.User).WithMany(p => p.AspNetUserTokens).HasForeignKey(d => d.UserId);
});
modelBuilder.Entity(entity =>
{
entity.ToTable("tblEmployeeSalary");
entity.HasOne(d => d.Employee).WithMany(p => p.TblEmployeeSalaries)
.HasForeignKey(d => d.EmployeeId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_tblEmployeeSalary_tblemployee");
});
modelBuilder.Entity(entity =>
{
entity.HasKey(e => e.Id).HasName("tblemployee_pkey");
entity.ToTable("tblemployee");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.Department)
.HasMaxLength(50)
.HasColumnName("department");
entity.Property(e => e.Ename)
.HasMaxLength(100)
.HasColumnName("ename");
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}
Подробнее здесь: https://stackoverflow.com/questions/771 ... estring-si
Мобильная версия