SQL Server 2008에서 CTE를 사용하려고 시도하고 Entity 프레임 워크에서이를 사용하려고합니다.엔티티 프레임 워크에서 CTE를 사용하여 페이징
다음은 SP이다
CREATE PROCEDURE GetReportingCategories
-- Add the parameters for the stored procedure here
@StartRow INT,
@EndRow INT,
@SortDirection VARCHAR(50),
@SortExpression VARCHAR(50),
@TotalRecord int OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
;WITH CTE (CategoryTitle, CreatedDate, UpdatedDate, [Status], RowNumber) AS
(
SELECT CategoryTitle,
CreatedDate,
UpdatedDate,
[Status],
ROW_NUMBER() OVER(ORDER BY
case when @SortExpression='CategoryTitle' and @SortDirection='DESCENDING' then CategoryTitle end DESC,
case when @SortExpression='CategoryTitle' and @SortDirection='ASCENDING' then CategoryTitle end ASC) AS RowNumber
FROM ReportingCategory
)
SELECT * INTO #TtCTE FROM CTE;
SELECT @TotalRecord = ISNULL(SUM(1), 0) FROM #TtCTE;
SELECT *
FROM #TtCTE
WHERE RowNumber >= @StartRow AND RowNumber <= @EndRow;
END
GO
SP 완벽하게 실행한다. 그러나 문제는 VS2010의 데이터베이스에서 모델을 업데이트 한 후 "함수 가져 오기 추가"를 시도 할 때 열 정보를 얻지 못하는 것입니다. 그래서, 그것을 소비 할 수 없습니다.
엔티티 프레임 워크 및 저장 프로 시저을 사용하여 CTE가없는 사용자 지정 페이지를 구현하는 방법을 안내하십시오. 감사합니다. .
왜 카운트 (*) 대신 isnull (sum (1,0))을 수행 했습니까? – Kyle
@ 카일 : 정확히 기억하지는 않지만 다음과 같은 내용이 있습니다. SELECT 문에서 아무런 결과도 반환하지 않으면 "TotalRecord"도 0으로 설정됩니다. 여러 가지 방법이 있습니다. – iMatoria