如何将 Identity 与我现有的数据库 ASP.NET Core MVC 和 EF CoreDB-First一起使用

问题描述

我的项目使用 ASP.NET Core 5.0 MVC 和 EF Core 5。我用表User创建了一个sql Server数据库,但是当我开始实现授权、注册和角色管理时,我决定使用Core Identity。

我浏览了很多文章,学习了如何从原始数据库 (Scaffold-DbContext) 中逆向工程模型,如何基于 Identity AspNetRolesAspNetUsers 等创建数据库使用继承 (Add-Migration) 拥有自己的属性...

但我没有找到主要问题的答案:如何在现有数据库中使用 Identity,例如,在表(“Basket”)中指定 AspNetUsers([Id]) 的外键,同时保持Core Identity 的所有功能。也许我应该使用 2 个 DbContexts 或其他东西,我不知道,我只是一个初学者。

具有自定义角色和用户的我的 IdentityContext

public partial class HotelServiceContext : IdentityDbContext<User,Role,int>
{
    public HotelServiceContext()
    {
    }

    public HotelServiceContext(DbContextOptions<HotelServiceContext> options)
        : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<User>().ToTable("Users");
        modelBuilder.Entity<IdentityUserLogin<int>>().ToTable("UserLogins");
        modelBuilder.Entity<IdentityUserToken<int>>().ToTable("UserTokens");
        modelBuilder.Entity<IdentityUserClaim<int>>().ToTable("UserClaims");
        modelBuilder.Entity<IdentityUserRole<int>>().ToTable("UserRoles");
        modelBuilder.Entity<IdentityRoleClaim<int>>().ToTable("RoleClaims");
        modelBuilder.Entity<Role>().ToTable("Roles");

    }
}

我的 DBContext,它是我通过执行命令 Scaffold-DbContext 得到的(它还包含使用身份表的工作,我之前使用 Update-Database数据库中创建了这些表)。

public TestContext(DbContextOptions<TestContext> options)
    : base(options)
{
}

public virtual DbSet<Administrator> Administrators { get; set; }
public virtual DbSet<AppUser> AppUsers { get; set; }
public virtual DbSet<Basket> Baskets { get; set; }
public virtual DbSet<Building> Buildings { get; set; }
public virtual DbSet<Client> Clients { get; set; }
public virtual DbSet<Feedback> Feedbacks { get; set; }

// ... And other generated code.

提前感谢您的回答。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)