我观察到一些我不太了解的行为,无法找到相关文档。
如标题所示,我正在使用asp.net核心标识,并且具有一个带有多个其他属性的自定义标识用户类。我注意到用户管理器返回了我的自定义对象和属性,但是我观察到有时自定义属性可用,而其他时候它们为空。这是自定义的IdentityUser:
public class Consultant : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Office Office { get; set; }
}
我正在使用一个具有私有数据库上下文作为属性的数据存储库。在控制器中,这是我观察到的差异。
在此示例中,当我查看顾问时,顾问对象中提供了Office。
[HttpGet]
public async Task<IActionResult> Settings()
{
var consultant = await _userManager.GetUserAsync(HttpContext.User);
var offices = _appDbRepository.GetOffices();
Console.Write(consultant.Office); // This will not fail. Office was loaded somehow magically into the consultant object.
但是,在这种情况下,检查顾问将显示Office为空。
public async Task<IActionResult> Index(WorkloadSummaryViewModel model)
{
var consultant = await _userManager.GetUserAsync(HttpContext.User);
Console.Write(consultant.Office); // This will fail because Office is null.
显然区别是我的存储库调用是为了在UserManager调用之后立即获得Office来加载用户,但是它们之间的联系是什么?