2014-01-21 129 views
3

我有一个EF代码优先的模型。它工作正常,但是当我尝试与Database.ExecuteSqlCommand运行存储过程,它总是返回-1,这并不重要,我把在存储过程的结果总是-1Database.ExecuteSqlCommand总是返回-1

我的存储过程:

CREATE PROCEDURE [dbo].[Login_user] 
    @clientKey varchar(max) 
AS 
BEGIN 
    SET NOCOUNT ON 
    RETURN(0) 
END 

我运行它,如:

我缺少的东西?

顺便说一句,如果我从SQL Server Management Studio中运行存储过程就提前返回0

USE [lo9iMed] 
GO 
DECLARE @return_value int 
EXEC @return_value = [dbo].[Login_user] 
    @clientKey = N'76F41F99-EA9E-4181-A6FB-579D23D3C2C0' 

SELECT 'Return Value' = @return_value 

感谢。

阿尼巴尔

+0

可能重复的[如何在C#程序中执行存储过程](http://stackoverflow.com/questions/1260952/how-to-execute-a-stored-procedure-within-c-sharp-程序) – 2014-01-21 14:16:33

回答

1

因为你正在使用SELECT,你要的是ExecuteScalar - 或者,如果不暴露,SqlQuery<int>。你可能得到你以后的结果,如果你改变它为return @return_value; - 但那么:你可能不会。

+1

嗨马克thx,4你的答案。我试过 ExecuteQuery (“EXEC [dbo]。[Login_user] {0}”,键),它会抛出 数据读取器有多个字段。多个字段对于EDM基元或枚举类型无效。 – user2968933

+0

@ user2968933坦率地说,不管这个'Database'包装器在这里:它不会帮助你... –

0

您的存储过程中包含SET NOCOUNT ON指令(您可能使用了SSMS模板?)。这意味着它不会计算受命令影响的行。删除这条线,你应该很好去! :)