我的控制器没有返回应有的结果

问题描述 投票:0回答:1

我将尽力提供您需要的一切信息,以帮助我诊断我的问题。数据库记录在 Full_name 字段中包含一个值,但当我运行 GetAll 或 GetById 时,它不会返回。我缺少什么?预先感谢您!

共享项目

型号

public class AbilityScore : BaseEntity
{
    public string Index { get; set; } = string.Empty;
    public string Name { get; set; } = string.Empty;
    public string Full_name { get; set; } = string.Empty;
    public string Desc { get; set; } = string.Empty;
    public string Url { get; set; } = string.Empty;
}

DTO

public record struct AbilityScoreResponse(
    int Id,
    string Index,
    string Name,
    string Full_name,
    string Desc,
    string Url
);

服务器项目

AbilityScore 存储库

public interface IAbilityScoreRepository
{
    Task<List<AbilityScore>> Create(AbilityScore abilityScore);
    Task<List<AbilityScore>?> HardDeleteById(int id);
    Task<List<AbilityScore>?> GetAll();
    Task<AbilityScore?> GetById(int id);
    Task<List<AbilityScore>> Update(int id, AbilityScore abilityScore);
}

public class AbilityScoreRepository : IAbilityScoreRepository
{
    private readonly DataContext _dataContext;

    public AbilityScoreRepository(DataContext dataContext)
    {
        _dataContext = dataContext;
    }

    public async Task<List<AbilityScore>> Create(AbilityScore abilityScore)
    {
        _dataContext.AbilityScores.Add(abilityScore);
        await _dataContext.SaveChangesAsync();
        return await GetAll();
    }

    public async Task<List<AbilityScore>?> GetAll()
    {
        return await _dataContext.AbilityScores.ToListAsync();
    }

    public async Task<AbilityScore?> GetById(int id)
    {
        var dbObject = await _dataContext.AbilityScores.FirstOrDefaultAsync(x => x.Id == id);
        return dbObject;
    }

    public async Task<List<AbilityScore>?> HardDeleteById(int id)
    {
        var dbObject = await _dataContext.AbilityScores.FirstOrDefaultAsync(x => x.Id == id);
        if (dbObject is null)
        {
            return null;
        }

        _dataContext.AbilityScores.Remove(dbObject);
        await _dataContext.SaveChangesAsync();
        return await GetAll();
    }
    public async Task<List<AbilityScore>> Update(int id, AbilityScore abilityScore)
    {
        var dbObject = await _dataContext.AbilityScores.FirstOrDefaultAsync(x => x.Id == id);
        if ((dbObject is null))
        {
            throw new EntityNotFoundException($"Ability Score with ID {id} was not found.");
        }

        dbObject.Index = abilityScore.Index;
        dbObject.Name = abilityScore.Name;
        dbObject.Full_name = abilityScore.Full_name;
        dbObject.Desc = abilityScore.Desc;
        dbObject.Url = abilityScore.Url;

        await _dataContext.SaveChangesAsync();
        return await GetAll();
    }
}

能力评分服务

public interface IAbilityScoreService
{
    Task<List<AbilityScoreResponse>> Create(AbilityScoreCreateRequest request);
    Task<List<AbilityScoreResponse>?> HardDelete(int id);
    Task<List<AbilityScoreResponse>> GetAll();
    Task<AbilityScoreResponse?> GetById(int id);
    Task<List<AbilityScoreResponse>?> Update(int id, AbilityScoreUpdateRequest request);
}

public class AbilityScoreService : IAbilityScoreService
{
    private readonly IAbilityScoreRepository _abilityScoreRepository;

    public AbilityScoreService(IAbilityScoreRepository abilityScoreRepository)
    {
        _abilityScoreRepository = abilityScoreRepository;
    }

    public async Task<List<AbilityScoreResponse>> GetAll()
    {
        var result = await _abilityScoreRepository.GetAll();
        return result.Adapt<List<AbilityScoreResponse>>();
    }
}

控制器

public class AbilityScoresController : ControllerBase
{
    private readonly IAbilityScoreService _abilityScoreService;

    public AbilityScoresController(IAbilityScoreService abilityScoreService)
    {
        _abilityScoreService = abilityScoreService;
    }

    [HttpGet]
    public async Task<ActionResult<List<AbilityScoreResponse>>> GetAll()
    {
        return Ok(await _abilityScoreService.GetAll());
    }

    [HttpGet("{id}")]
    public async Task<ActionResult<AbilityScoreResponse>> GetById(int id)
    {
        var dbObject = await _abilityScoreService.GetById(id);
        if (dbObject is null)
        {
            return NotFound($"Ability Score with the given ID {id} was not found.");
        }
        return Ok(dbObject);
    }
}
asp.net mapster
1个回答
0
投票

先调试: 我认为您应该首先在这些行之间添加一些日志,

dbObject.Index = abilityScore.Index;
    dbObject.Name = abilityScore.Name;
    dbObject.Full_name = abilityScore.Full_name;
    dbObject.Desc = abilityScore.Desc;
    dbObject.Url = abilityScore.Url;
    //here print dboobject, and abilitScore object
    await _dataContext.SaveChangesAsync();
    return await GetAll();

然后看看什么没有被正确分配,你的 dbObject.full_name 应该是一个空字符串,对吗?但你的abilitScore.full_name不应该。我有一种感觉,你的 _ 给你带来了一些问题。 让我知道发生了什么!

© www.soinside.com 2019 - 2024. All rights reserved.