所以,我刚刚开始使用ASP.Net Identity framework在我的新手项目中,但我偶然发现了一个关于用户的逻辑问题,我不知道如何解决,所以让我告诉你我的意思.
在我的web项目中,我使用了两个数据库(它们都使用不同的db上下文):
- 业务数据库
- ASP.Net身份数据库
在将身份添加到我的项目之前,我已将所有用户信息存储在我的业务数据库中(使用EntityFramework Core进行迁移等),他们的模型如下:
public abstract class User
{
public int Id { get; set; }
[Required(ErrorMessage = "Input login")]
public string Login { get; set; }
[Required(ErrorMessage = "Input password")]
[Display(Name = "Password")]
public string Pswrd { get; set; }
[Required(ErrorMessage = "Input mail")]
[Display(Name = "E-mail")]
public string Email { get; set; }
[Display(Name = "Phone number (optional)")]
[Range(111111111, 999999999)]
public int Phone_nr { get; set; }
}
然后,我的用户在注册时 Select 了两个角色:
public class Poster : User
{
[Display(Name = "Questions asked (total)")]
public int Total_posted { get; set; }
//1 to N
public List<Question> Questions { get; set; }
}
public class Answerer : User
{
[Display(Name = "Answers posted (total)")]
public int Total_answered { get; set; }
//1 to N
public List<Question> Questions { get; set; }
}
现在,当我将身份添加到我的项目中(以及包含用户、角色等内容的数据库)时,我想我不需要在我的业务数据库中存储id、密码、邮箱等信息,而需要在Identity one中存储.
然后是我的问题和我的问题-是否应该通过自定义IdentityUser类将所有用户信息存储在Identity数据库中,这样它将包含一些额外的属性,而只是在业务数据库中丢弃users表?因为如果是的话,那么我将如何包括外键之类的东西(或者实际上-什么是它们的替代方案,因为我不知道在两个不同的数据库之间是否可能)?因为可以看出,我的用户类必须包含对其他类的引用(在我的例子中是"问题"类).