无法使用 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 中。
我尝试了以下方法:
- 使用
Execute
方法,userid值为0。
- 使用
Query
方法,期望值但是 returns 模型(注释代码)
任何帮助将不胜感激。
您的存储过程使用 OUT
参数,但您的 @UserID
声明为 ParameterDirection.ReturnValue
。
如果您使用 ParameterDirection.Output
,它应该可以正常工作。
你只需修改SELECT @UserID => RETURN @UserID。然后它将按预期工作。
希望对你有帮助,我的朋友:))
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 中。
我尝试了以下方法:
- 使用
Execute
方法,userid值为0。 - 使用
Query
方法,期望值但是 returns 模型(注释代码)
任何帮助将不胜感激。
您的存储过程使用 OUT
参数,但您的 @UserID
声明为 ParameterDirection.ReturnValue
。
如果您使用 ParameterDirection.Output
,它应该可以正常工作。
你只需修改SELECT @UserID => RETURN @UserID。然后它将按预期工作。 希望对你有帮助,我的朋友:))