database - 然后在 EF Core 中包含多对多
问题描述
我有以下表格:
public class Parent
{
[Key]
public long Id { get; set; }
[ForeignKey("ParentId")]
public List<Person> Persons { get; set; }
}
public class Person
{
[Key]
public long Id { get; set; }
public long ParentId { get; set; }
[ForeignKey("PersonId")]
public List<Friend> Friends { get; set; }
}
public class Friend
{
public long PersonId { get; set; }
public long FriendId { get; set; }
[ForeignKey("FriendId")]
public Person Friend { get; set; }
}
Friend 表是 Person 表的两行之间的多对多关系。它有一个由 PersonId 和 FriendId 组成的 PK,声明如下:
modelBuilder.Entity<Friend>(entity =>
{
entity.HasKey(e => new { e.PersonId, e.FriendId });
});
modelBuilder.Entity<Friend>()
.HasOne(e => e.Friend)
.WithMany()
.OnDelete(DeleteBehavior.Restrict);
我想让所有的父母和所有人以及他们所有的朋友在一起,看起来像这样:
var entities = context.Parents
.AsNoTracking()
.Include(c => c.Persons)
.ThenInclude(i => i.Friends)
.ToList();
但是,这不会从 Friends 表中获取数据。
如果我在没有父母的情况下将朋友包括在人员查询中,则可以:
var entities = context.Persons
.AsNoTracking()
.Include(i => i.Friends)
.ToList();
我正在使用 EF Core 2.2 版。
如何进行第一个查询以检索一个人的朋友以及导致这种行为的原因?
解决方案
推荐阅读
- javascript - 为什么我不能创建一个“for / in”循环遍历同一对象中的值的方法?
- r - 如何从同一订单的多个价格和付款金额创建运行余额?
- html - 如何使用css网格选择整个网格项目,同时保持项目中心对齐并且在悬停时仍然保持
- android - 按周和月创建统计图表android
- powershell - 将脚本转换为 .EXE 后,Powershell 中的 Start-Transcript 不起作用
- github - 将问题从 excel 转移到 github 组织
- json - 收到无效的 JSON 有效负载。无法解析数字(Google Vision API)
- python - 使用 add() 方法将文档添加到 Firestore 时出错
- javascript - 返回和接收布尔值
- python - 多条件模糊连接