CREATE PROCEDURE usp_UserValidation
(@UserName varchar(50),
@Password varchar(30))
AS
BEGIN
DECLARE @UserID int, @RoleID int;
SELECT @UserID = UserId, @RoleID = RoleId
FROM Users
WHERE UserName = @UserName AND Password = @Password
IF @UserID IS NOT NULL
BEGIN
IF EXISTS (SELECT UserId FROM Users WHERE UserId = @UserID AND IsActive = 1)
BEGIN
SELECT
@UserID [UserID],
(SELECT RoleType FROM Role WHERE RoleId = @RoleID) [RoleType] -- User Valid
END
ELSE
BEGIN
SELECT -2 [@UserID], '' [RoleType] -- User not activated.
END
END
ELSE
BEGIN
SELECT -1[@UserID] , '' [RoleType] -- User invalid.
END
END
Dapper
public (int UserId,string Roletype) 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.Output);
connection();
sqlConn.Open();
var res = SqlMapper.Query(sqlConn, "usp_UserValidation", parameters, commandType: CommandType.StoredProcedure).SingleOrDefault();
int userid = parameters.Get<dynamic>("@UserID");
string roletype = parameters.Get<dynamic>("@RoleType");
sqlConn.Close();
return (userid, roletype);
}
Я пытаюсь реализовать аутентификацию для заданных учетных данных пользователя. Хранимая процедура отлично работает в SQL. Получение ошибки в строке SqlMapper.Query
при запуске приложения.
Что мне здесь не хватает?