代码之家  ›  专栏  ›  技术社区  ›  James Huang

.net core 2实体框架-ApplicationUser扩展外键对象未在get上填充

  •  0
  • James Huang  · 技术社区  · 7 年前

    我已经扩展了ApplicationUser,以包括OrganizationId和应该映射到外部组织表的组织对象。这在初始用户注册时效果很好-如果是现有组织,我只填充OrganizationId字段。如果是一个新组织,我实例化一个新的组织对象,并在组织表中创建一个新组织。

    当我使用GetUserAsync下拉记录时,会提取正确的CityId和OrganizationId字段。但UserCity和Organization对象为NULL。我知道我可以根据返回的ID手动查找城市/组织,但我想知道Entity Framework是否有一种机制可以在GetUserAsync上自动用外键对应的对象填充这两个对象。

    var user = await _userManager.GetUserAsync(User);
    
    public class ApplicationUser : IdentityUser
    {
        public String FirstName { get; set; }
    
        public String LastName { get; set; }
    
        public int? CityId { get; set; }
    
        [ForeignKey("CityId")]
        public virtual City UserCity { get; set; }
    
        [ForeignKey("OrganizationId")]
        public virtual Organization Organization { get; set; }
    
        public int? OrganizationId { get; set; }
    
        public bool AddToConstantContact { get; set; }
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Hany Habib    7 年前

    获取记录时,需要使用include关键字来获取引用的值。Ex公司

    using (var context = new BloggingContext())
    {
        var blogs = context.Blogs
        .Include(blog => blog.Posts)
        .ToList();
    }
    

    因为你的代码是这样的

    context.Include("Organization").Include("City")
    

    它也没有在实体框架核心中自动加载,因为直到版本2.1才支持延迟加载。

    有关更多信息,请检查 https://docs.microsoft.com/en-us/ef/core/querying/related-data