![](/img/trans.png)
[英]Entity Framework calling stored procedure in a loop returning incorrect results
[英]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.