ASP.NET MVC 2:SPROC还原结果?

时间:2011-02-13 05:56:47

标签: c# stored-procedures

我无法弄清楚如何从我调用的SPROC获取返回的数据:

public string LoginParty(string UserName, string LoginPin)
{
    var result = db.spPartyLogin(UserName, LoginPin);

    return result.ToString; // I wish
}

我想知道如何检索我调用的任何SPROC的结果。在这种情况下,我只获得一个结果,一个电子邮件地址或如果凭据不正确,则为0 ......并且result.ToString不起作用。

SPROC:

ALTER PROCEDURE [dbo].[spPartyLogin] 
    -- Add the parameters for the stored procedure here
    @UserName varchar(50),
    @LoginPin varchar(50)
AS
BEGIN
    DECLARE @value varchar(50)
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Select statements for procedure here
    SELECT @value = EmailAddress FROM Party
    WHERE UserName = @UserName AND LoginPin = @LoginPin;

    SELECT ISNULL(@value,0)

END

正如您所看到的,在这种情况下,我将返回EmailAddress或0.我想捕获返回的结果。我不知道有多少其他方法可以描述我想要做的事情......

1 个答案:

答案 0 :(得分:0)

通常Libq2Sql会创建一个新类型并返回该类型的IEnumerable。由于您的单个结果行有一个没有名称的列,我不确定它会做什么。在调试器中检查您的结果,看看您有什么。如果EmailAddress不是整数,那么如果它为null,则不应使用整数0作为替换。你可以使用bkank字符串甚至允许它返回null。

如果在调试器中查看结果时看不到地址,请尝试将其声明为out参数或在结果中指定列名:

SELECT ISNULL(@value,'') AS EmailAddress

ALTER PROCEDURE spPartyLogin
    @Username VARCHAR(50),
    @LoginPin VARCHAR(50),
    @EmailAddress VARCHAR(50) out

您需要删除并添加proc以使Linq2Sql查看更改并重新生成代码。