【发布时间】:2020-04-07 15:39:52
【问题描述】:
我正在使用 Asp.Net 和 Microsoft Identity。我正在扩展 IdentityUser 以添加一些额外的信息。
我的 IdentityUser 覆盖:
using Microsoft.AspNetCore.Identity;
namespace DASBlazorSite.Data
{
public class SiteUser : IdentityUser
{
public SiteUser() : base()
{
}
public AspNetUserDetail UserData { get; set; }
}
}
AspNetUserDetail:
using System;
using System.ComponentModel.DataAnnotations;
namespace DASBlazorSite.Data
{
public class AspNetUserDetail
{
[Key]
public Guid Id { get; set; }
[StringLength(50)]
public string FirstName { get; set; }
[StringLength(50)]
public string MiddleName { get; set; }
[StringLength(50)]
public string LastName { get; set; }
}
}
完成添加迁移更新数据库之后,我看到正在创建 AspNetUserDetail 表。我还在 AspNetUsers 中看到了一个额外的列,UserDataId。
当我修改用户并将其保存为UserManager.UpdateAsync(SiteUser) 时,我看到在 AspNetUsers 中填充了 GUID,在 AspNetUserDetail 中填充了匹配的 GUID。我还看到了在 AspNetUserDetail 中填充的 FirstName 等的相应值。
在这一点上,一切看起来都很好。但是,当我通过 UserManager 检索用户时,UserData 字段为空。
这是某种实体框架延迟/渴望加载的东西吗?关于我将如何着手纠正它的任何建议?
奇怪的是,如果我加载一个用户,然后将 null UserData 设置为 new AspNetUserDetail 并填写相应的值,然后执行 UserManager.UpdateAsync(SiteUser) 在 AspNetUserDetail 表中创建一个全新的条目。它有一个新的 GUID,UserDataId 字段现在指向它。 AspNetUserDetail 中的先前条目现在处于孤立状态。
【问题讨论】:
标签: c# asp.net-core asp.net-identity