如何使用FirstAsync在Entity Framework Core中处理null?

时间:2019-06-24 19:43:54

标签: c# entity-framework-core

  public async Task<ParagemRegisto> GetParagemRegistoOnGoingAsync(int registoId)
  {
        return await = _context.ParagensRegistos
            .Where(pr => pr.RegistoId == registoId && pr.HoraFim == null)
            .FirstAsync();
  }

当找不到记录时,这将导致空引用异常。我该怎么做,以便在这种情况下返回null?

3 个答案:

答案 0 :(得分:3)

您可以使用FunctionTestCase

答案 1 :(得分:2)

public async Task<ParagemRegisto> GetParagemRegistoOnGoingAsync(int registoId)
{
    var result = await _context.ParagensRegistos
        .Where(pr => pr.RegistoId == registoId && pr.HoraFim == null)
        .FirstOrDefaultAsync();

    return result ?? new List<ParagemRegisto>();
}

FirstOrDefaultAsync将始终返回默认值,而不是引发异常。因此,如果没有记录,则可以检查返回的内容。在这种情况下,我们将检查是否为空,如果确实为空,则尝试返回一个空列表。

答案 2 :(得分:2)

您可以使用FirstOrDefaultAsync,如果它不存在,则返回null,但是不会发生异常。

  public async Task<ParagemRegisto> GetParagemRegistoOnGoingAsync(int registoId)
  {
     return await = _context.ParagensRegistos.FirstOrDefaultAsync(pr => pr.RegistoId == registoId && pr.HoraFim == null);
  }