簡體   English   中英

為什么Entity Framework調用我的存儲過程但返回不正確的值?

[英]Why is Entity Framework calling my stored procedure but returning an incorrect value?

我有一個存儲過程,只返回記錄總數除以傳入的任何值。這是為了幫助網站上的分頁。

但是,我使用實體框架綁定到該存儲過程,並且它為所有調用返回-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

你試過那個嗎? 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”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM