存储过程使用linq数据上下文返回值

Jam*_*sla 12 c# sql linq sql-server stored-procedures

我试图用Linq访问存储过程的返回值

DECLARE @ValidToken int = 0 //I have also tried using a bit instead of an int here.

IF EXISTS(SELECT 1 FROM Tests WHERE TestToken = @Token)
    select @ValidToken = 1

return @ValidToken
Run Code Online (Sandbox Code Playgroud)

这通过sql studio运行SP时有效.但是我试图用linq使用datacontext类来运行它,它总是返回-1.

using (DataEntities dataEntities = new DataEntities())
    {
        int query = data.ValidateToken(id);
        Response.Write(query.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

查询总是等于-1,我不知道为什么.

我已经在线查看,看起来有更简单的方法来获得返回值但是我宁愿坚持使用Linq,因为这是程序的其余部分正在使用的.

ZZZ*_*ZZZ 5

为什么你们都使用存储过程作为函数?

虽然存储过程有return,但它不是函数,所以你不应该用它return来返回数据,

相反,您应该使用输出参数和其他方式来返回数据,如MSDN中所述

MSDNreturn记录了使用情况

滥用return可能是LINQ无法理解您的存储过程的原因.