我有下表:
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版。
我如何进行第一个查询来检索一个人的朋友,这是什么原因造成的?