ASP.NET Core自定义IdentityUser并包括相关属性

时间:2018-11-19 18:30:36

标签: asp.net-core asp.net-identity entity-framework-core

我观察到一些我不太了解的行为,无法找到相关文档。

如标题所示,我正在使用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来加载用户,但是它们之间的联系是什么?

0 个答案:

没有答案