为什么Identity 2.0在扩展IdentityUser时会在AspNetUserRoles中添加一个新列?

时间:2014-11-05 19:50:25

标签: c# asp.net-mvc asp.net-identity

我从IdentityUser,CustomUser派生了一个类。 如果我检查数据库表,我可以看到Identity 2.0已经向AspNetUserRoles表添加了第三列,称为CustomUser_Id。

它似乎是我的CustomUser表的外键,但AspNetUserRoles已经有UserId列,所以它似乎是多余的。

为什么呢?我错过了什么?

1 个答案:

答案 0 :(得分:4)

我假设你还有ApplicationUser闲逛。 IdentityUser是一个抽象类,因此dbo.AspNetUserRoles中的列附加到用于通用TUser的{​​{1}}类型的任何具体类。默认情况下,这是IdentityDbContext<TUser>。如果您创建了另一个ApplicationUser的子类,那么您所做的就是创建一个具有类似属性的类,但是它与所有Identity内容完全断开,并且可能有自己的表IdentityUser,其中然后需要在dbo.CustomUsers上为其添加单独的外键。

长短,你只会在用户苹果上咬一口。如果您希望拥有不同类型的用户,则需要继承主用户实施(默认为dbo.AspNetUserRoles),而不是ApplicationUser