如何使用WebAPI检查数据库中是否存在记录?

时间:2019-04-09 22:17:47

标签: c# asp.net-mvc asp.net-web-api

我一直在寻找适当的方向,以检查数据库中是否存在登录记录。我的意图是,当用户凭据从登录页面进入时,使用登录名和密码并使用异步检查其是否存在。

public async Task<ActionResult<ResultsDTO<LoginDTO>>> PostLogin(LoginFormDTO login)
{
    ResultsDTO<LoginFormDTO> output = new ResultDTO<LoginForFoDTO>();

    if (!ModelState.IsValid)
    {
        output.Success = false;
        output.SetValidations(ModelState);

    }
    LoginFormDTO loginFormDTO = null;
    try
    {
        string encryptedPassword = encryptmystuff(login.pw);
        // validate login
        log logUser = _context.log.SingleOrDefault(m => m.name == login.Username && m.password == encryptedPassword);
    }
    catch
    {

    }
}

1 个答案:

答案 0 :(得分:1)

您只需要更改此行

log logUser = _context.log.SingleOrDefault(m => 
                      m.name == login.Username && m.password == encryptedPassword);

log logUser = await _context.log.SingleOrDefaultAsync(m => 
                      m.name == login.Username && m.password == encryptedPassword);

// return failure if logUser is null

这正在使用async/await,它将同步执行您的代码,但是在执行数据库查询时不会阻塞线程。

另一方面,如果您使用SingleOrDefault(),那么您将在数据库操作期间阻塞线程,这不是一个好习惯。