簡體   English   中英

使用Entity Framework Core查詢多對多相關數據

[英]Query many-to-many related data using Entity Framework Core

我有兩個具有多對多關系的實體。 然后,我還有一個實體,其中包含兩個ID。 我只想加載兩個主要實體。

我的實體:

public class User 
{
    public long Id { get; set; }
    public string Email { get; set; }
    public virtual ICollection<UserRole> UserRoles { get; set; }
}

public class Role 
{
    public long Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<UserRole> UserRoles { get; set; }
}

public class UserRole 
{
    public long UserId { get; set; }
    public User User { get; set; }
    public long RoleId { get; set; }
    public Role Role { get; set; }
}

預期的JSON結果:

{
  "Email": ...
  "Roles": [
    {"Name": ...},
    {"Name": ...},
    ...
  ] 
}

EF Core在技術上不支持M2M關系。 您可以通過“連接”實體來偽造所說的支持,該實體將關系的兩端連接起來,就像在UserRole 不幸的是,這沒有辦法解決,因此,如果您不想在結果中看到UserRole關系,則必須手動調整數據的形狀。 例如:

var users = await _context.Users.Select(u => new
{
    Email = u.Email,
    Roles = u.UserRoles.Select(r => r.Role)
}).ToListAsync();

專家提示:如果要從關系中選擇,則不需要“ Include EF Core足夠聰明,可以發出聯接以填充數據。

暫無
暫無

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

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