我有一个EF代码优先模型。它工作正常,但是当我尝试使用Database.ExecuteSqlCommand
运行存储过程时它始终返回-1,无论我在存储过程中放置什么结果总是-1
我的存储过程:
CREATE PROCEDURE [dbo].[Login_user]
@clientKey varchar(max)
AS
BEGIN
SET NOCOUNT ON
RETURN(0)
END
我的运行方式如下:
return Database.ExecuteSqlCommand(EXEC [dbo].[Login_user] {0}", key);
我错过了什么吗?
顺便说一下,如果我从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 :(得分:4)
您的存储过程中包含SET NOCOUNT ON指令(您可能使用过SSMS模板?)。这意味着它不会计算受命令影响的行数。删除这一行,你应该好好去! :)
答案 1 :(得分:1)
因为您使用的是SELECT
,所以您需要ExecuteScalar
- 或者如果没有公开,SqlQuery<int>
。如果您将其更改为return @return_value;
,可能会获得您所获得的结果 - 但是:您可能不会。