2009-05-16 2 views
2

저는 Entity Framework를 사용하고 있습니다. 나는 많은 관계가있다 기사 < -> 카테고리. 각 아티클은 여러 카테고리에 속할 수 있으며 각 카테고리는 둘 이상의 아티클에 속할 수 있습니다. 나는 각 카테고리 내 기사의 COUNT를 얻을 수 있습니다 :엔티티 프레임 워크 : 다수 대 다수 및 합계

public IEnumerable<MenuCategory> GetMenuCategories() 
{ 
    return (from c in db.CategorySet.Include("Articles") 
    orderby c.CategoryName 
    select new MenuCategory 
    { 
     CategoryID = c.CategoryID, 
     CategoryName = c.CategoryName, 
     CountOfCategory = c.Articles.Count() 
     }); 

} 

그러나 나는 또한 각 카테고리에 기사의 비율을 계산할 수 있도록 기사의 총 수를 얻을 필요가있다. 누구든지 위의 코드를 확장하고 데이터베이스를 별도로 호출하지 않고이를 수행하는 방법을 알려 줄 수 있습니까?

감사

답변

0

코드는이 작업을 수행하기 위해 기사의 총 수를 알 필요가있다.

두 번째 데이터베이스 호출을 피하려면 데이터베이스에서 calc를 수행하고 결과 집합의 여분의 열로 반환 할 수 있습니다. 이 방법을 사용하는 방법은 여러 가지가 있지만보기를 사용하고 SQL 함수 TotalArticles를 사용하면 calc가 articleCount/TotalArticles입니다. 엔티티 프레임 워크에 대해 많이 알지 못하므로이 방법을 사용할 수 있는지 확실하지 않습니다.

데이터베이스에서 calc를 수행 할 수 없다면 기사의 수가 너무 많아서 많은 오버 헤드를 거의 추가하지 않지만 두 번째 데이터베이스 호출은 피할 수 없다고 생각합니다. 주 호출 전에이 호출을 수행 한 다음 위와 비슷한 방식으로 결과에 값을 추가 할 수 있습니다. 예 : PercentageOfArticles = c.Articles.Count()/articleCount

+0

db에서 Count를 가져 오는 메소드를 추가 한 다음 결과를 추가 속성에 적용했습니다. 내 MenuCategory 객체 내 값은 ASP.NET MVC 뷰에서 사용할 수 있으므로 태그 클라우드를 만들 수 있습니다. 결과적으로 2db 호출이 발생하지만 실제로 db에 계산을하지 않으려합니다. –

+0

오케이, 근본적으로 제가 제시 한 2 가지 옵션 중 후자입니다. –