내가 처리하는 방법은 일부 확장 방법 (필터)을 사용하는 것입니다. 나는 이것을 구현 한 프로젝트의 샘플 코드를 작성했다. ParentPartner 객체 및 SubPartners 목록을 채우는 선을 구체적으로 살펴보십시오.
public IQueryable<Partner> GetPartners()
{
return from p in db.Partners
select new Partner
{
PartnerId = p.PartnerId,
CompanyName = p.CompanyName,
Address1 = p.Address1,
Address2 = p.Address2,
Website = p.Website,
City = p.City,
State = p.State,
County = p.County,
Country = p.Country,
Zip = p.Zip,
ParentPartner = GetPartners().WithPartnerId(p.ParentPartnerId).ToList().SingleOrDefault(),
SubPartners = GetPartners().WithParentPartnerId(p.PartnerId).ToList()
};
}
public static IQueryable<Partner> WithPartnerId(this IQueryable<Partner> qry, int? partnerId)
{
return from t in qry
where t.PartnerId == partnerId
select t;
}
public static IQueryable<Partner> WithParentPartnerId(this IQueryable<Partner> qry, int? parentPartnerId)
{
return from p in qry
where p.ParentPartner.PartnerId == parentPartnerId
select p;
}
이것은 좋은 생각이라고 생각하지만 구현하려고하면 오류가 발생합니다. "WithPartnerId"확장 메서드에는 SQL에 대한 지원되는 변환이 없다고합니다. 어떤 아이디어? –