Как мы можем добиться многого ко многим с помощью DataLoader?
Допустим, я хочу получить компании с их контактами (и у контакта может быть несколько компаний). У меня есть companyLinks как таблица midde (с companyId / contactId).
У меня есть это, которое работает, когда есть только один контакт для компании:
public async Task<ILookup<Guid, Contact>> GetContactsFromCompanyBatchAsync(IEnumerable<Guid> companyIds)
{
var contacts = _entities.Include(c => c.CompanyLinks).Where(contact => contact.CompanyLinks.Any(cl => companyIds.Contains(cl.CompanyId)));
return contacts.ToLookup(cont => {
var res = cont.CompanyLinks.Any() ? cont.CompanyLinks.ElementAt(0).CompanyId : Guid.Empty;
return res;
});
}
Но что, если контакт имеет больше чем 1 компания? Как я могу узнать правильный идентификатор компании?