微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何将 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 举报,一经查实,本站将立刻删除。