![](/img/trans.png)
[英]Seeding the database with a many-to-many relationship using 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.