我们如何使用 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 家公司怎么办?我怎么知道正确的 companyId ?