2012-07-18 4 views
1

EF 엔터티에 계산 된 필드를 포함 할 수 있습니까? 예를 들어, 제품을 판매하는 상점이 있고 제품이 카테고리로 분류되어 있다고 가정 해 보겠습니다.엔터티 프레임 워크, 계산 된 엔터티 필드

상점 관리자에게 편집을 위해 카테고리 목록이 표시되면 각 카테고리의 제품 수를 목록의 일부로 나열하고 싶습니다.

NHibernate에서 나는 공식을 사용할 것입니다.

<property name="Products" formula="dbo.Category_NumProducts(id)" /> 

EF와 유사한 기능이 가능한 경우 해결할 수 없습니다. 카테고리 뷰를 만들어 이것을 두 번째 엔티티에 매핑 할 수 있다는 것을 알고 있지만 거의 완벽하게 복제 된 것으로 보입니다.

EDIT : 이것이 EF에서 가능하지 않다면, 이것을 수행하는 가장 좋은 방법은 무엇입니까?

답변

2

불행히도 Category 테이블에이 계산 열이없는 경우 두 번째 엔터티를 만들지 않고 매핑 할 수 없습니다. 데이터베이스보기, EDMX에서 쿼리 정의 또는 EDMX의 쿼리 뷰 (쿼리보기 집계 함수를 계산해야하기 때문에 작동하지 않을 수 있음).

편집 :

은 가장 간단한 솔루션 (또한 가장) 단순히 뷰 모델 (일부 비 매핑 클래스) 생성 및 LINQ 쿼리에 프로젝션을 사용한다 IMHO :

var query = from c in context.Categories 
      where ... 
      select new CategoryView { 
       Id = c.Id, 
       Name = c.Name, 
       ... 
       Products = c.Products.Count() 
      }; 
+0

OK 덕분에, 그것은이다 인상을 받았다. 그리고 언급 한 접근 방식 (보기, 쿼리 정의 등), 이러한 문제를 해결할 올바른 방법은 무엇입니까? 나는 잘못된 각도에서 접근하지 않고 있는지 확인 중입니다. 건배 –

+0

이 솔루션을 해결하는 방법을 몇 가지 예제를 추가했습니다. –

+0

좋아요, 저장소 패턴을 사용하고 있으므로 원래 제안한대로 두 번째 엔티티를 만들어야 할 수도 있습니다. Hmmm은 NHibernate를 점점 더 좋아하게 만들고, 나는 처음부터 그것을 결코 좋아하지 않았다. –