【发布时间】:2018-02-05 13:19:44
【问题描述】:
我已扩展 IdentityUser 以包含用户地址的导航属性,但是当使用 UserManager.FindByEmailAsync 获取用户时,导航属性不会被填充。 ASP.NET Identity Core 是否有某种方式来填充导航属性,如 Entity Framework 的 Include(),还是我必须手动完成?
我已经这样设置了导航属性:
public class MyUser : IdentityUser
{
public int? AddressId { get; set; }
[ForeignKey(nameof(AddressId))]
public virtual Address Address { get; set; }
}
public class Address
{
[Key]
public int Id { get; set; }
public string Street { get; set; }
public string Town { get; set; }
public string Country { get; set; }
}
【问题讨论】:
-
AFAIK 没有内置方法,您需要“手动”完成。至少我没有找到一个,当我遇到同样的问题时。如果真的有办法,很高兴得到纠正......
-
附注:
[ForeignKey(nameof(AddressId))]不是必需的,因为约定优于配置。 -
@CamiloTerevinto:这不是必需的,真的。但是,我总是添加属性只是为了明确。我不喜欢依赖约定的“魔术”,它也让代码更加明显。
-
同样,特别是对于可能不熟悉 EF Core 及其约定的人。
-
确认!多年来一直把我的头撞在墙上。即使在 Core 3.1 中,这仍然无法正常工作。文档 似乎 表明这应该有效 - 请参阅 docs.microsoft.com/en-us/aspnet/core/security/authentication/… - 但它没有。
标签: c# asp.net-core entity-framework-core asp.net-core-identity