将非标识表添加到ASP.NET核心2中的标识服务器;我需要一个不同的dbcontext吗?

时间:2018-03-22 16:43:30

标签: entity-framework asp.net-core identityserver4

我看过并且没有看到任何相关内容,大多数信息都与直接扩展身份表有关。

我像这样扩展了应用程序用户:

 public class ApplicationUser : IdentityUser<long>
{
    //[Key()]
    //public  long Id { get; set; } 

    [Required()]
    [MaxLength(100)]
    public string Password { get; set; }

    [Required()]
    [MaxLength(100)]
    override public string UserName { get; set; }

    [Required()]
    [MaxLength(50)]
    public string FirstName { get; set; }

    [Required()]
    [MaxLength(50)]
    public string LastName { get; set; }

    public virtual Organization Organization { get; set; }
}

public class ApplicationRole : IdentityRole<long>
{
}

以及对ApplicationDbContext的其他必要更改(将主键更改为long)。除此之外,它相当标准的标识。我添加了迁移,更新;创建通常的表加上组织表,因为它是一个导航属性。组织本身没有导航属性。请记住,在大多数情况下,我把这些课程作为项目的一部分交给我,并且我正努力在我所获得的范围内工作。 现在,我需要添加几个类,一个作为示例:

 public class Event
{
    [Key()]
    public long Id { get; set; }

    [Required()]
    [MaxLength(200)]
    public string Name { get; set; }             

    [Index]
    public virtual Organization Organization { get; set; }
}

还有一些其他相关课程。因此,在没有现有数据库的标准代码第一个核心2应用程序中,我将创建从DbContext派生的上下文类,而在Identity ApplicationDbContext(默认名称)中派生自IdentityDbContext。

所以在我开始破坏之前,在做这样的事情之前是否有任何顾虑或特殊考虑?

 public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
            public DbSet<Event> Events{ get; set; }
            public DbSet<OtherClass> OtherClasses{ get; set; }
    }

注意:我确实发现this post似乎正在做我正在谈论的内容,但它适用于MVC 5

1 个答案:

答案 0 :(得分:1)

您可以将类添加为属性,即public DbContext<Class> Classes {get;set;}到ApplicationDbContext类,您将获得数据访问权限。他们不需要相关。如果您需要样品,请告诉我。希望这会有所帮助。