Предположим, у нас есть такая модель:
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, с данными из таблицы Contact, из таблицы Titre, из таблицы TypeContact и так далее ... с помощью одной единственной инструкции. С помощью API Include / ThenInclude я могу написать что-то вроде этого:
_dbSet
.Include(tiers => tiers.Contacts)
.ThenInclude(contact => contact.Titre)
.ToList();
Но после свойства Titre я не могу включать другие ссылки, такие как TypeContact, Langue, Fonction ... Метод Include предлагает объекты Tiers, а ThenInclude предлагает объект Titre, но не объект Contact. Как я могу включить все ссылки из моего списка контактов? Можем ли мы добиться этого с помощью одной-единственной инструкции?
источник
var contacts = _dbSet.Include(tiers => tiers.Contacts);
contacts.ThenInclude(contact => contact.Titre);
contacts.ThenInclude(contact => contact.TypeContact);
contacts.ThenInclude(contact => contact.Langue);
разве это не сработает?Queryable
каждый раз создавали новые объекты и никогда не оценивали их.contacts
будет иметь только исходное значение, которое вы ему присвоили.tiers.Contacts
этоList<T>
? как бы вы тогда указали товар?Для полноты:
Также можно напрямую включать вложенные свойства,
Include
если они не являются свойствами коллекции, например:источник