使用ASP.NET MVC5 Identity框架将单独的用户组存储在两个表或单个表中?

时间:2015-03-28 13:12:38

标签: asp.net asp.net-mvc-5 asp.net-identity

我正在使用ASP.NET MVC 5构建一个SaaS应用程序,我需要存储两种不同类型的用户,这些用户将为每个用户存储不同的字段信息。将有Subscibers和General Users,其中每个General用户都属于Subscriber。因此,每个用户都将拥有一个父订户。

我是否应该使用单个ASPNETUSERS表来存储所有用户(订阅者/一般用户),并在同一个表中为每个用户存储自定义列?我认为必须有更好的做法来实现这一目标。由于这将是一个SaaS应用程序,我们将用户信息存储在一个数据库中的多个实体上,我们应该采用什么样的数据库设计?

供参考,这是我目前的数据库设计 -

id [用户的主键] 电子邮件 密码 sub_name [订户名称。仅当用户是订阅者时才会填充] sub_address [订户地址,仅当用户是订户时才会填充] status [如果用户处于活动状态则存储] parent_id [父母的身份。仅当用户是普通用户时才会填充此内容]

除此之外,我们将注册每个用户的角色(订阅者/普通用户)

请指教。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您应该使用单个表并在代码中为不同类型的用户创建两个类。具有实体框架的ASP表使用每个层次结构的表(由鉴别器列给出):

public class Subscriber : IdentityUser {

    public virtual List<GeneralUser> GeneralUsers {get; set;}
    //other properties
}

然后创建您的普通用户:

public class GeneralUser : IdentityUser {

    public virtual Subscriber Subs {get; set;}
    //other properties
}