Как проверить, существует ли запись в базе данных с использованием WebAPI? - PullRequest
0 голосов
/ 10 апреля 2019

Я искал подходящее направление, чтобы проверить, существует ли запись для входа в базу данных. Мои намерения состоят в том, чтобы со страницы входа в систему войти учетные данные пользователя, чтобы использовать имя пользователя и пароль, и проверить, существует ли он с помощью async.

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 Ответ

1 голос
/ 10 апреля 2019

Вам просто нужно изменить эту строку

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(), тогда вы блокируете поток во время работы с БД, что не является хорошей практикой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...