gpt4 book ai didi

entity-framework - 如何告诉 UserManager.FindByNameAsync 包含关系?

转载 作者:行者123 更新时间:2023-12-04 19:03:11 24 4
gpt4 key购买 nike

我将 ASP.NET Identity 2.2.0 与 ASP.NET MVC 5.2.3 和 Entity Framework 6.1.2 一起使用。

我使用 ASP.NET Identity 和 Code First 向我的数据库添加了一个新属性及其对应的表,如下所示:

public class ApplicationUser
{
[ForeignKey("UserTypeId")]
public UserType Type { get; set;}
public int UserTypeId { get; set;}
}

public class UserType
{
[Key]
public int Id { get; set;}

public string Name { get; set; }
}

现在,从一些行动,当我打电话:
var user = UserManager.FindByNameAsync(userName);

它确实为用户提供了正确的 UserTypeId因为这是一个原语,但它没有得到 UserType ApplicationUser 的属性(property)类(class)。

如果我不使用这个抽象,我要么调用 LoadProperty<T>Include Entity Framework 中的方法以包含名为 Type 的导航属性或关系。 (类型为 UserType )在 ApplicationUser 上类(class)。

我如何使用 ASP.NET Identity 的 UserManager 来做到这一点?我怀疑唯一的方法是在我的自定义中覆盖此方法 UserManager派生类并自己做?

最佳答案

使用 Entity Framework 延迟加载,您需要确保导航属性标记为 virtual .

public class ApplicationUser
{
[ForeignKey("UserTypeId")]
public virtual UserType Type { get; set;}
public int UserTypeId { get; set;}
}

或者,如果您不能/不想使用延迟加载,那么您仍然可以像使用任何其他实体一样使用您的上下文:
var user = context.Users.Include(u => u.Type).Single(u => u.UserName == userName);

关于entity-framework - 如何告诉 UserManager.FindByNameAsync 包含关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31997592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com