C# 使用AspNetUser在MVC核心中设置身份,并在通过实体框架连接的已建立数据库中设置角色

C# 使用AspNetUser在MVC核心中设置身份,并在通过实体框架连接的已建立数据库中设置角色,c#,entity-framework,asp.net-core,authentication,asp.net-identity,C#,Entity Framework,Asp.net Core,Authentication,Asp.net Identity,我已经有了一个完整的ASP.NET核心MVC应用程序,我正试图通过ASP.NET身份向其添加身份验证。我有一个数据库,其中包含AspNetUsers和Roles的表,我希望使用Entity Framework将此项目连接到其他项目中(此项目的其余部分使用dapper,但似乎Entity更容易进行身份验证?) 我一直在试图拼凑如何使用身份进行身份验证,该身份验证基于通过实体框架连接的已建立数据库中的信息,但我不确定我的设置是否正确,并且我一直遇到错误。是否有更好的策略可以从已建立的数据库在已完成的

我已经有了一个完整的ASP.NET核心MVC应用程序,我正试图通过ASP.NET身份向其添加身份验证。我有一个数据库,其中包含
AspNetUsers
Roles
的表,我希望使用Entity Framework将此项目连接到其他项目中(此项目的其余部分使用dapper,但似乎Entity更容易进行身份验证?)

我一直在试图拼凑如何使用身份进行身份验证,该身份验证基于通过实体框架连接的已建立数据库中的信息,但我不确定我的设置是否正确,并且我一直遇到错误。是否有更好的策略可以从已建立的数据库在已完成的ASP.NET核心MVC应用程序中提供身份验证

以下是我的设置的一些亮点,以及我遇到的最新错误的详细信息:

实体框架为
AspNetUser
角色生成类,分别扩展
IdentityUser
IdentityRole
类。许多属性名称与标识类中的相同,是否需要覆盖

尝试登录时,我在
DbContext
类中遇到错误

特别是:

modelBuilder.Entity<Roles>(entity =>
        {
            entity.HasKey(e => e.RoleId)
                .HasName("PK_Role");

            entity.Property(e => e.RoleId).HasColumnName("RoleID");

            entity.Property(e => e.Description)
                .HasMaxLength(250)
                .IsUnicode(false);

            entity.Property(e => e.RoleName)
                .IsRequired()
                .HasMaxLength(50)
                .IsUnicode(false);
        });
我现在也得到了一个例外:

System.InvalidOperationException:'IdentityRole'上的索引{'NormalizedName'}和'AspNetRoles'上的{'Name'}都映射到'AspNetRoles.RoleNameIndex',但具有不同的列({'NormalizedName'}和{'Name'})。'


您是如何定义角色类的?@Rena I编辑以包含classHi@bx-ded,您的DbContext包含Roles类,但您提供了AspNetRoles类。您可以共享整个DbContext和模型吗?您是如何定义角色类的?@Rena I编辑以包含classHi@bx-ded,您的DbContext包含Roles类,但您提供了AspNetRoles类。您可以共享整个DbContext和模型吗?
public partial class AspNetRoles: IdentityRole
{
    override public string Name { get; set; }
    public bool? IsActive { get; set; }
    public string Description { get; set; }
    public int? RoleId { get; set; }
}