1

我有一个存储过程,它只返回记录总数除以传入的任何值。这是为了帮助网站上的分页。

但是,我正在使用实体框架绑定到该存储过程,并且它正在返回对它的-1所有调用。当我使用 SQL Management Studio 查询存储过程时,它返回了正确的值。

我的存储过程如下所示:

CREATE PROCEDURE [dbo].[GetAuditRecordPageCount]
@Count INTEGER
AS
RETURN ((SELECT COUNT(Id) FROM AuditRecords) / @Count) + 1

我在 C# 中对实体框架的调用是这样的:

int pageCount;
using (Entities entities = new Entities())
{
    pageCount = entities.GetAuditRecordPageCount(count);
}

我以这种方式编写 C# 代码是否正确?

根据评论中的要求,EF生成的SQL是:

exec [dbo].[GetAuditRecordPageCount] @Count=100
4

1 回答 1

3

你试过吗? http://www.devtoolshed.com/using-stored-procedures-entity-framework-scalar-return-values

我认为您的程序将如下所示:

CREATE PROCEDURE [dbo].[GetAuditRecordPageCount]
@Count INTEGER
AS
declare @retVal int
set @retVal = ((SELECT COUNT(Id) FROM AuditRecords) / @Count) + 1
select @retVal

在 c# 代码中:

int? pageCount;
using (Entities entities = new Entities())
{
   pageCount = entities.GetAuditRecordPageCount(count).SingleOrDefault();

   if (pageCount.HasValue)
   {
      //do something here
   }
   else
   {

   }
}

不要忘记在编辑功能导入屏幕中输入“Scalars: Int32”。

于 2013-01-03T00:08:11.457 回答