首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在graphql-dotnet中使用dataLoader实现多对多

在graphql-dotnet中使用dataLoader实现多对多
EN

Stack Overflow用户
提问于 2020-03-27 06:31:26
回答 1查看 119关注 0票数 0

我们如何使用dataLoader实现多对多?

假设我想获取具有这些联系人的公司(一个联系人可以有多个公司)。我有一个companyLinks作为中间表(带有companyId/contactId)。

当一家公司只有一个联系人时,我有这个功能:

代码语言:javascript
复制
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;
  });
}

但是,如果一个联系人有一个以上的公司怎么办?我如何知道正确的companyId?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-06 07:05:09

感谢sungram3r的提示。解决方案是从连接表开始。

代码语言:javascript
复制
public async Task<ILookup<Guid, Contact>> GetContactsFromCompanyBatchCollectionAsync(IEnumerable<Guid> companyIds)
    {
        var companyContacts = _salesNoteContext.CompanyContact
           .Where(contactCompany => companyIds.Contains(contactCompany.CompanyId))
           .Include(contactCompany => contactCompany.Company);
        return companyContacts.ToLookup(contactCompany => contactCompany.CompanyId, contactCompany => contactCompany.Contact);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60877199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档