c# - ASP.NET Core Identity UserManager 返回用户而不包含相关对象(延迟加载)
问题描述
我有一个自定义用户类User
派生自IdentityUser
:
public class User : IdentityUser
{
public UserInfo Info { get; set; }
}
我使用了一个UserInfo
类和两个子类来存储基于用户类型的附加用户信息:
public class UserInfo
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsArchived { get; set; } = false;
}
public class StudentInfo : UserInfo
{
public List<Enrollment> Enrollments { get; set; }
}
public class InstructorInfo : UserInfo
{
public List<Department> Departments { get; set; }
}
在我的Account()
操作中UsersController
,我使用注入的UserManager
实例从用户存储中获取用户:
public class UsersController
{
private readonly UserManager<User> usrMgr;
private readonly RoleManager<IdentityRole> roleMgr;
public UsersController(UserManager<User> usrMgr, RoleManager<IdentityRole> roleMgr)
=> (this.usrMgr, this.roleMgr) = (usrMgr, roleMgr);
[Authorize]
public async Task<IActionResult> Account()
{
User user = await userManager.GetUserAsync(this.User); // Here user.Info is null
return user is null ? NotFound() : View(user);
}
}
问题是该GetUserAsync(this.User)
方法不包含该UserInfo
属性,而是将其保留为null
. FindByIdAsync(userId)
也不包括它。如果这是 a DbContext
,我本可以使用 an.Include()
但我不太确定如何告诉 a 在UserManager
此处包含相关属性。
解决方案
推荐阅读
- android - PayPal Android SDK 出现 DUPLICATE_REQUEST_ID 错误
- saml-2.0 - SAML 响应签名为空:SAML 2.0
- tcsh - 使用 tcsh 时的非法变量名
- reactjs - 单击行时触发 cellRenderer 中的 IconButton
- php - 为什么此 SQL UPDATE 查询不适用于 WHERE 的变量?
- excel - 如何将切片器选择限制为一个
- django - axios post dosent 将任何数据发送到 django
- java - 在不使用 Fielddata 的情况下对弹性搜索中的文本字段进行排序
- java - 测试失败,“when() 需要一个参数,该参数必须是'模拟上的方法调用'” maven 项目错误(未使用框架)
- ios - Xcode11.3.1:“此时无法安装此应用”