![](/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.