在数据库中对 ID 进行排序

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

我使用 ASP.NET Core/EF 构建了一个 API Web 应用程序。我已经创建了所有模型、控制器和界面,并且能够进行

GET, POST, PUT, and DELETE
调用。但是,当我在任何控制器中执行
GET
调用时......ID 不会按数字顺序返回。例如,类别控制器如下所示:

enter image description here

在哪里/如何检查有关发生此情况的原因的日志或信息。我该如何实现排序方法来解决这个问题?

我可以成功调用所有 API 端点并执行

GET, POST, PUT, DELETE
的功能,但我的 ID 不正确。每个控制器(
Pokemon, Category, Owner,
等)的 ID 均按数字顺序排列,但它们不是从 1 开始。

获取代码

public IActionResult GetCategories() 
{ 
      var categories = _mapper.Map<List<CategoryDto>>
                        (_categoryRepository.GetCategories()); 
      if (!ModelState.IsValid) 
          return BadRequest(ModelState); 
      return Ok(categories); 
} 
c# asp.net-core-mvc asp.net-core-webapi datacontext
1个回答
1
投票

正如我在上面的评论中告诉你的,你应该在将结果返回到视图之前对其进行排序。这就是 MVC 模式的整个概念,您在控制器中完成工作以准备结果并将其发送到仅显示它的视图

public IActionResult GetCategories() 
{ 
    if (!ModelState.IsValid) 
        return BadRequest(ModelState); 

    var data = _categoryRepository.GetCategories().OrderBy(x => x.Id);
    var categories = _mapper.Map<List<CategoryDto>>(data); 
    return Ok(categories); 
} 

如您所见,在开始对数据库进行任何工作之前,我还移动了对 ModelState 的检查。如果任何数据库或映射相关的问题出现问题,适当的 try/catch 处理程序也应该被认为是安全的。

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