在第二层包括几个参考
Include several references on the second level
假设我们有这个模型:
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,我想从 Tiers table、Contact table、Titre table、TypeContact table 检索所有数据] 等等......用一条指令。使用 Include/ThenInclude API 我可以这样写:
_dbSet
.Include(tiers => tiers.Contacts)
.ThenInclude(contact => contact.Titre)
.ToList();
但在 Titre 属性 之后,我无法包含其他引用,例如 TypeContact、Langue、Fonction ... Include 方法建议使用 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.
为了完整起见:
也可以通过 Include
直接包含嵌套属性,以防它们不是集合属性,如下所示:
_dbSet
.Include(tier => tier.Contact.Titre)
.Include(tier => tier.Contact.TypeContact)
.Include(tier => tier.Contact.Langue);
假设我们有这个模型:
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,我想从 Tiers table、Contact table、Titre table、TypeContact table 检索所有数据] 等等......用一条指令。使用 Include/ThenInclude API 我可以这样写:
_dbSet
.Include(tiers => tiers.Contacts)
.ThenInclude(contact => contact.Titre)
.ToList();
但在 Titre 属性 之后,我无法包含其他引用,例如 TypeContact、Langue、Fonction ... Include 方法建议使用 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.
为了完整起见:
也可以通过 Include
直接包含嵌套属性,以防它们不是集合属性,如下所示:
_dbSet
.Include(tier => tier.Contact.Titre)
.Include(tier => tier.Contact.TypeContact)
.Include(tier => tier.Contact.Langue);