在第二级包含几个参考

假设我们有这个模型:

public class Tiers { public List<Contact> Contacts { get; set; } } 

 public class Contact { public int Id { get; set; } public Tiers Tiers { get; set; } public Titre Titre { get; set; } public TypeContact TypeContact { get; set; } public Langue Langue { get; set; } public Fonction Fonction { get; set; } public Service Service { get; set; } public StatutMail StatutMail { get; set; } } 

使用EF7,我希望通过一个指令从层级表中检索所有数据,包括来自联系人表格的数据,来自Titre表格的数据,来自TypeContact表格等等。 使用Include / ThenInclude API我可以这样写:

 _dbSet .Include(tiers => tiers.Contacts) .ThenInclude(contact => contact.Titre) .ToList(); 

但是在Titre属性之后,我不能包含像TypeContact,Langue,Fonction等其他引用。包含方法暗示了一个Tiers对象,ThenInclude暗示了一个Titre对象,但不包含Contact对象。 我如何包含联系人列表中的所有参考? 我们能用一个单一的指令来实现吗?

.ThenInclude()会链接到最后一个.ThenInclude()或最后一个.Include() (以较近者为准)来拉入多个层次。 要在同一级别包含多个同级,只需使用另一个.Include()链。 正确格式化代码可以大大提高可读性。

 _dbSet .Include(tiers => tiers.Contacts).ThenInclude(contact => contact.Titre) .Include(tiers => tiers.Contacts).ThenInclude(contact => contact.TypeContact) .Include(tiers => tiers.Contacts).ThenInclude(contact => contact.Langue); // etc.