无法使用 Dapper 从数据库中检索用户 ID

Fail to retrieve the User Id from Database using Dapper

public int UserAuthentication(UsersViewModel users)
{
        DynamicParameters parameters = new DynamicParameters();
        parameters.Add("@UserName", users.UserName);
        parameters.Add("@Password", users.Password);
        parameters.Add("@UserID", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

        connection();
        sqlConn.Open();

        var result =  sqlConn.Execute("usp_UserLoginValidation", parameters, commandType: CommandType.StoredProcedure);            
        // int userid = SqlMapper.Query<UsersViewModel>(sqlConn, "usp_UserLoginValidation", parameters, commandType: CommandType.StoredProcedure).FirstOrDefault();
        int userid = parameters.Get<int>("@UserID");

        sqlConn.Close();            

        return userid;
}

存储过程:

ALTER PROCEDURE usp_UserLoginValidation
    (@UserName varchar(50),
     @Password varchar(20),
     @UserID int = 100 OUT)
AS
BEGIN
    SET @UserID = (SELECT UserId FROM Users 
                   WHERE UserName = @UserName AND Password = @Password AND IsActive = 1)
    SELECT @UserID
END

我正在尝试在用户登录应用程序时从数据库 table 中获取 UserId。在数据库 returns UserId 中执行存储过程,但无法使用 Dapper 将该信息提取到 class 中。

我尝试了以下方法:

  1. 使用Execute方法,userid值为0。
  2. 使用 Query 方法,期望值但是 returns 模型(注释代码)

任何帮助将不胜感激。

您的存储过程使用 OUT 参数,但您的 @UserID 声明为 ParameterDirection.ReturnValue

如果您使用 ParameterDirection.Output,它应该可以正常工作。

你只需修改SELECT @UserID => RETURN @UserID。然后它将按预期工作。 希望对你有帮助,我的朋友:))