我有一张
companies
从数据库来看,每家公司可能是另一家公司的母公司
company
,我想知道哪些公司
孩子们
.没有别的,只是
HasChildren
=
true
或
false
:
从数据库中获取公司:
public async Task<IEnumerable<CompDTO>> Get(SearchObject request)
{
IQueryable<Company> companies;
// .. some code where I'm fetching my companies
return Map(companies);
}
映射方法:
private IEnumerable<CompDTO> Map(IEnumerable<Company> companies)
{
return companies.Select(c => Map(c));
}
以及另一种从DB数据创建DTO对象的映射方法:
private CompDTO Map(Company company)
{
return new CompDTO()
{
Id = company.Id,
CompanyName = company.Title,
ParentCompanyId = company.ParentCompanyId,
HasChildren = // I need to check here if company.Id is parent to any another company
};
}
基本上我想检查我的物体是否
childrens
或者不是这样我可能会
有孩子
属性正确。:)
附笔
我试过这样的方法:
private CompDTO Map(Company company)
{
return new CompDTO()
{
Id = company.Id,
CompanyName = company.Title,
ParentCompanyId = company.ParentCompanyId,
HasChildren = HasChildren(companyId).GetAwaiter().Result();
};
}
private async Task<bool> HasChildren(long id)
{
return await _context.Companies.AnyAsync(c => c.ParentCompanyId == id && c.ParentCompany.Active);
}
但通过这种方法,我收到的错误是
多个线程共享一个数据库连接
不管怎样
我想避免打数据库电话来检查公司是否有孩子
(对或错)。
我想在记忆中有可能做到这一点吗?因为在像5000这样的许多行上,将有5000个额外的DB调用来检查真/假数据:)
谢谢你们