Мне нужно использовать OData для моих конечных точек API в приложении ASP.NET Core, но все примеры касаются работы непосредственно с классами модели данных.В архитектуре моего приложения у меня есть сервисный уровень, методы этого сервиса возвращают классы 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
params.Как добавить его в мою текущую архитектуру?