在SQL Server 2008中我有一个简单的存储过程移动了一系列的记录到另一个表:获取从存储过程的结果反馈在实体框架
CREATE PROCEDURE [dbo].MyProc(@ParamRecDateTime [datetime])
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [dbo].Table2
SELECT
...,
...
FROM [dbo].Table1
WHERE RecDateTime <= @ParamRecDateTime
DELETE FROM [dbo].Table1
WHERE RecDateTime <= @ParamRecDateTime
END
运行它从SQL Server Management Studio中,我把工作做好,并返回值= 0
DECLARE @return_value int
EXEC @return_value = dbo.MyProc @ParamRecDateTime = '2011-06-25 11:00:00.000'
SELECT 'Return Value' = @return_value
但是,当我使用实体框架调用从一个应用程序相同的存储过程,我也把工作做好,但返回的值是“-1”:
int result = myrepository.MyProc(datetimePar);
MessageBox.Show(result.ToString());
我没有设法找到这个错误的解释,但发现this令人沮丧的帖子,据说这种类型的返回代码在SQL Server中没有标准。
当从实体框架调用存储过程执行结果时,以及存储过程没有返回任何实体时,获得存储过程执行结果的知道的好方法是什么?
如果删除'SET NOCOUNT ON',该怎么办? –
@Wouter de Kort:有趣!在这种情况下,作为返回值,我会完成一些操作,即移动的记录数乘以2.这是应该发生的事情吗? – rem
是的,它返回受影响的记录数。在这种情况下,你插入和删除相同数量的记录,因此乘以2. –