子类未保存在 MVC 标识模型中 ASP.Net 数据库中

本文关键字:ASP Net 数据库 模型 标识 保存 存在 MVC 子类 | 更新日期: 2023-09-27 18:31:25

我是 ASP.Net 身份模型的新手,并尝试创建我的应用程序用户类的子类。我想将它们保存在数据库的其他表中:

[Table("Persons")]
public class Person : ApplicationUser{...}

我在种子方法中以这种方式创建人员类:

 Person testUser = new Person();
 UserManager.Create(testUser);

但这只会在我的数据库中的 ApplicationUser 表中创建条目。创建它们后,我尝试使用用户 ID 获取人员数据:

var userID = User.Identity.GetUserId()
using (ApplicationDbContext context = new ApplicationDbContext())
{
    var result = context.PersonModels.FirstOrDefault(x => x.Id == userID);
}

但是表总是空的。有没有办法让它工作?

子类未保存在 MVC 标识模型中 ASP.Net 数据库中

我怀疑UserManager.Create()期待一个ApplicationUser对象而不是一个Person,因此,只是将其视为ApplicationUser

您应该只将特定于应用程序的属性添加到 ApplicationUser 类中,而不是从该类继承。描述该过程的教程在这里

简而言之,您只需要在/Models/identity.cs 文件中的此类定义中添加属性:

public class ApplicationUser : IdentityUser
    {

然后进行必要的迁移。

事实上,我的 MVC 版本包含一条评论,其中包含指向 Identity 中教程的链接.cs YMMV :-)