我已阅读有关如何扩展身份的信息以及与用户个人资料相关的其他字段。
但我无法理解如何通过添加与Roles连接的表来扩展身份功能。
我想做什么:
新的子应用程序类是:
public class Project
{
public int ID { get; set; }
[StringLength(100)]
public string ProjectName { get; set; }
// How can the foreign key to AspNetRoles be added ?
}
你能帮忙在AspNetRoles表中添加一个外键吗?
答案 0 :(得分:2)
John Atten撰写了关于此主题的extraordinary blog post。一般的想法是什么?
您创建IdentityRole类的子类,并将您的Project类添加为属性以创建关系。代码看起来有点类似于以下内容:
public class ApplicationRole : IdentityRole
{
public ApplicationRole() : base() { }
public ApplicationRole(string name) : base(name)
{
}
public virtual Project Project { get; set; }
}
在扩展标识角色类一节中,他还会在DbContext中显示您接下来要做的事情(查看OnModelCreating方法的实现)。在某些情况下,这不是必需的。如果使用IdentityDbContext的通用实现,则可以将角色实现作为类型参数传递。缺点是您通常还必须实现其他类型参数(在大多数情况下,只需创建用于type参数的基类的子类)。
总的来说,我喜欢约翰创造整个事物的方式,因为与使用泛型的方式相比,它可以让你获得更多的控制权。您应该阅读文章到最后,因为他详细解释了重要的概念。