簡體   English   中英

.net core 2實體框架-ApplicationUser擴展外鍵對象未在get上填充

[英].net core 2 Entity Framework - ApplicationUser Extended Foreign Key object not populating on get

我擴展了ApplicationUser,以包括一個OrganizationId和一個應該映射到外部Organization表的Organization對象。 這在初始用戶注冊時效果很好-如果它是現有的組織,則只填充OrganizationId字段。 如果它是一個新的Organization,我將實例化一個新的Organization對象,並在Organization表中創建一個新的Organization。

當我使用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; }
}

在獲取記錄時,您需要使用include關鍵字來獲取引用的值。 防爆

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/zh-cn/ef/core/querying/related-data

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM