2013-12-20 6 views
4

테이블의 일부 데이터를 여러 그룹으로 나누고 싶지만 DAL2를 사용할 수 있는지 확실하지 않습니다. 난 단지 사용자가 SQL의 WHERE 부분을 지정할 수 있도록 예제를 포함 건너 정보를DAL2에서 Count (*)를 어떻게 사용합니까?

SELECT DISTINCT productType, COUNT(*) FROM Products GROUP BY productType 

:

나는 다음과 같은 쿼리를 수행합니다. 이 예제는 유감스럽게도 쿼리의 WHERE 부분을 스커트하므로 DAL2를 사용하여 어떻게 접근해야하는지 잘 모르겠습니다. DAL2를 사용하는 것이 가능합니까? 아니면 데이터베이스를 다른 방식으로 쿼리해야합니까? DAL2를 사용하여 수행 할 수있는 경우 이러한 쿼리를 어떻게 수행합니까?

답변

3

예는 PetaPoco 당신을위한 "SELECT * FROM TableName" 부분에 채우는 것을 의미하지만, 물론 당신은 귀하의 경우에는 자신의 SQL 문

을 실행할 수 있습니다

public class ProductCount { 
    public int ProductType {get; set;} 
    public int Count {get; set;} 
} 

var ProductCountList = db.Fetch<ProductCount>(@"SELECT DISTINCT productType, 
     COUNT(*) as Count 
     FROM Products 
     GROUP BY productType"); 
+0

감사 에두아르도. 이것이 올바른 해결책 인 것처럼 보입니다.하지만 IDataContext 객체를 사용하여 데이터베이스와 상호 작용합니다. IDataContext 개체의 .ExecuteQuery()와 비슷한 기술을 사용했는데 제대로 작동하는 것 같습니다. 내가 사용하고있는 객체에는 .Fetch()가 없습니다. 어떤 유형의 객체가 "db"입니까? – RacerNerd

+0

나는 PetaPoco에 대해서 이야기하고있다. Dal2는 PetaPoco를 기반으로합니다. 어쩌면 당신은'Query()'함수를 가지고 있습니다 –

+0

고마워요. 사람들이 .ExecuteQuery()를 사용하면 대답입니다. 코멘트에서 내 질문은 개체 "db"귀하의 예제에서 변수의 유형을 감독합니다. 선언은 어떻게 생겼을까요? – RacerNerd

0

모범 사례가 무엇인지 말할 수 없습니다. 하지만 SQL 서버 백엔드가 있고 dnn 모듈과 함께 dal2를 사용합니다. 방금 SQL Server에서 그룹화 및 조인을 사용하여 뷰를 작성한 다음 자동 증가가 false 인 테이블 (클래스 어노테이션의 테이블 이름 대신 뷰 이름 사용)과 같은 뷰를 맵핑했습니다. 저를 위해 일했고 사전 컴파일 된 비 동적 쿼리의 이점을 얻었습니다. 이를 동적으로 생성해야하는 경우 최상의 접근 방식이 무엇인지 잘 모릅니다.

다른 회원들의 의견을 듣고 싶습니다. 단지 WHERE 부분을 보여주는