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

C# 如何使用WebAPI检查数据库中是否存在记录?,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我一直在寻找合适的方向来检查数据库中是否存在登录记录。我的意图是,当用户凭据从登录页面进入时,使用登录名和密码并使用异步检查它是否存在 public async Task<ActionResult<ResultsDTO<LoginDTO>>> PostLogin(LoginFormDTO login) { ResultsDTO<LoginFormDTO> output = new ResultDTO<LoginForFoDTO>

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

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
    {

    }
}

你只要换一行就行了

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

这是使用async/await,它将同步执行代码,但在执行DB查询时不会阻塞线程


另一方面,如果您使用SingleOrDefault,那么您在DB操作期间阻塞了一个线程,这不是一个好的做法。

到目前为止,您在这段代码中遇到了什么样的问题?另外,如果您只是要等待对SingleOrDefaultAsync的调用,那么您也可以使用SingleOrDefault-通过等待它,你已经有效地实现了同步again@ADyson它不会运行,但我正在尝试您的解决方案。不会运行不是错误消息或问题陈述。请给我们详细的错误信息。我的建议不会解决您的问题,我只是指出,在这里使用异步是浪费时间,除非您在异步代码运行时确实要执行其他操作。@ADyson错误标识符丢失。
log logUser = await _context.log.SingleOrDefaultAsync(m => 
                      m.name == login.Username && m.password == encryptedPassword);

// return failure if logUser is null