在ServiceStack中使用ResponseDTO自动查询

时间:2019-04-09 19:39:33

标签: servicestack

我已使用以下代码在API中创建了自动查询功能。

[Route("/cars/search")]
public class SearchCars : QueryDb<Car, CarDto>,  IJoin<Car, Equipment, Colour, FuelType, Manufacturer>
{
    public List<int> EquipmentIds { get; set; }
    public List<int> ManufacturerIds { get; set; }
    public List<int> ColourIds { get; set; }
}

CarDto看起来像这样

public class CarDto
{
    public int Id { get; set; }

    public List<Equipment> Equipment { get; set; }

    public Manufacturer Manufacturer { get; set; }
    public int ManufactorId { get; set; }

    public FuelType FuelType { get; set; }
    public int FuelTypeId { get; set; }

    public byte[] ProfileImage { get; set; }
}

我想知道IJoin是否寻找任何特定的值,因为当我尝试使用它时,我得到“无法推断汽车与设备之间的关系”

汽车看起来像这样。

    [AutoIncrement]
    public int Id { get; set; }

    public int FuelTypeId { get; set; }

    [Required]
    public List<Equipment> Equipment { get; set; }

    [Required]
    public List<int> EquipmentIds { get; set; }

    [Required]
    public byte[] ProfileImage { get; set; }

设备看起来像这样。

    [AutoIncrement]
    public int Id { get; set; }

    public EquipmentType EquipmentType { get; set; }

    [Required]
    public int EquipmentTypeId { get; set; }

    [Required]
    public string Name { get; set; }

我意识到,知道EquipmentIds是应该在Equipment表中检查的ID列表时,将需要很多魔术,但是由于ServiceStack的其他所有功能都是魔术,因此我尝试一下。

请注意,我已经缩短了一些模型,因为它们很长,并且包含很多情况下不需要的信息。

1 个答案:

答案 0 :(得分:1)

任何加入AutoQuery的人都需要关注OrmLite's Reference Conventions