我有一个网站,里面有客户和运营商。两者都需要注册。客户来源于IdentityUser,并扩展了所有类型的客户信息字段,如地址和出生日期。对于操作员,我需要完全不同的信息,例如部门。
首先,我有一个ApplicationUser对象(派生自IdentityUser)、一个引用ApplicationUser对象的Customer对象(1:1关系,未强制执行)和一个也引用ApplicationUser的Operator对象。
我想知道这是否是正确的方式。我想知道是否不可能有一个从IdentityUser派生的CustomerUser对象和一个也从Identity User派生的OperatorUser对象。
基本上,问题是如何使用AspNet Identity在MVC6 ASPNet5应用程序中处理几种类型的用户。我特别没有研究如何使用角色,因为这仍然不能回答如何处理不同的属性集。
您提出的是组合与继承这一经典问题。通常,这里最好的建议是更喜欢组合而不是继承。有时作文会显得不直观。。。我们的大脑倾向于"操作员是用户"one_answers"客户就是使用者"的心理模型。但是,您可以像"具有用户凭据的客户/操作员(或其他系统角色)"一样轻松地建模关系。
很难说其中一个比另一个更正确,但使用composition将比实体模型的类层次结构更适合EF的ORM阻抗不匹配。您只需要在建模关系(方向性、基数等)和查询时注意空引用。