Я встречаю странный вопрос. Я использую .net core 3.1
, pkg - Microsoft.EntityFrameworkCore
, DB - Sqlite
.
Моя сущность:
public class Company
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Introduction { get; set; }
}
Интерфейс обработчика:
public interface ICompanyRepository
{
Task<IEnumerable<Company>> GetCompaniesAsync();
Task<Company> GetCompanyAsync(Guid companyId);
Task<bool> CompanyExistsAsync(Guid companyId);
}
Когда я реализовать следующий метод, только первый GetCompaniesAsync
возвращает данные, другие возвращают ноль:
// This method can be return data
public async Task<IEnumerable<Company>> GetCompaniesAsync()
{
return await _context.Companies.ToListAsync();
}
// This method return null
public async Task<Company> GetCompanyAsync(Guid companyId)
{
if (companyId == Guid.Empty)
{
throw new ArgumentNullException(nameof(companyId));
}
return await _context.Companies.FirstOrDefaultAsync(x => x.Id == companyId);
}
// This method also return null
public async Task<bool> CompanyExistsAsync(Guid companyId)
{
if (companyId == Guid.Empty)
{
throw new ArgumentNullException(nameof(companyId));
}
return await _context.Companies.AnyAsync(x => x.Id == companyId);
}
Я пытался удалить await
:
public async Task<Company> GetCompanyAsync(Guid companyId)
{
if (companyId == Guid.Empty)
{
throw new ArgumentNullException(nameof(companyId));
}
foreach (var c in _context.Companies.ToList())
{
if (c.Id == companyId)
{
return c;
}
}
return null;
}
Он может вернуть нормальные данные вместо null
.
Следующий метод вызывается в контроллере:
public async Task<Company> GetCompany(Guid companyId)
{
var company = await companyRepository.GetCompanyAsync(companyId);
if (company == null)
{
return NotFound();
}
return Ok(company);
}
В голове у меня есть using Microsoft.EntityFrameworkCore;
Также я имею видел, как люди говорят, что установка Microsoft.EntityFrameworkCore.Tools
- это нормально, но я все еще не могу.