【发布时间】:2019-10-15 02:51:19
【问题描述】:
我需要在 ASP.NET Core 应用程序中为我的 API 端点使用 OData,但所有示例都是关于直接使用数据模型类。在我的应用架构中,我有服务层,该服务的方法返回 DTO 类,然后映射到 API 视图类。
我的数据类(基础设施层):
public partial class Carrier : BaseEntity
{
public string Name { get; set; }
public string Code { get; set; }
public string UsDotNumber { get; set; }
public string McNumber { get; set; }
我的 DTO 课程:
public class CarrierBaseDto
{
public int Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public string Fein { get; set; }
public string McNumber { get; set; }
我的演示文稿(API)类:
public class CarrierAPI
{
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "code")]
public string Code { get; set; }
[JsonProperty(PropertyName = "fein")]
public string Fein { get; set; }
[JsonProperty(PropertyName = "mcNumber")]
public string McNumber { get; set; }
我的服务方式:
public List<CarrierBaseDto> SearchCarriersDto()
{
var query = _context.Carriers
.Where(c => !c.Deleted);
IQueryable<CarrierBaseDto> queryDto = query.ProjectTo<CarrierBaseDto>(_mapperConfig);
return queryDto.ToList();
}
我的控制器方法:
[HttpGet]
[Route("GetAll")]
public IActionResult GetAll()
{
var carriers = _carrierService.SearchCarriersDto();
var carriersApi = _mapper.Map<List<CarrierElementAPI>>(carriers);
return new OkObjectResult(carriersApi);
}
我想添加使用$orderBy、$filter、$fields 参数的能力。如何将其添加到我当前的架构中?
【问题讨论】:
标签: c# api odata asp.net-core-2.0 asp.net-core-webapi