我已使用以下代码在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的其他所有功能都是魔术,因此我尝试一下。
请注意,我已经缩短了一些模型,因为它们很长,并且包含很多情况下不需要的信息。