【发布时间】:2011-07-06 08:39:29
【问题描述】:
我正在尝试在 sql server 2008 中使用 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)) 而不是 count(*)?
-
@Kyle:我不记得确切,但它是这样的:当 SELECT 语句不返回任何行时,“TotalRecord”也将设置为 0。我知道有很多方法。
标签: visual-studio-2010 sql-server-2008 entity-framework-4 pagination common-table-expression