我有一个房地产投资对象。每个属性可以具有多个图像。 我有一种方法可以检索属性数据以及图像,但是在邮递员中测试API时,只返回一个图像。
这是界面
IPropertyRepository:
Task<Property> GetProperty(int id);
PropertyRepository:
public async Task<Property> GetProperty(int id)
{
var property = await _context.Property.Include(ph => ph.Photos)
.FirstOrDefaultAsync(p => p.Id == id);
return property;
}
PropertyController:
[HttpGet("{id}", Name = "GetProperty")]
public async Task<IActionResult> GetProperty(int id)
{
var property = await _repo.GetProperty(id);
var propertyToReturn = _mapper.Map<PropertyForDetailedDto>(property);
return Ok(property);
}
这是上面使用的DataTransferObject的类。
public class PropertyForDetailedDto
{
public int Id { get; set; }
public string Town { get; set; }
public string County { get; set; }
public string Address { get; set;
public int UserId {get; set; }
public ICollection<Photo> Photos { get; set; }
}
这里有什么想法吗?
AutoMapper
public class AutoMapperProfiles : Profile
{
public AutoMapperProfiles()
{
CreateMap<UserForRegisterDto, User>();
CreateMap<PropertyForCreateDto, Property>();
CreateMap<PropertyToReturnDto, Property>();
CreateMap<PhotoForCreationDto, Photo>();
CreateMap<PropertyToReturnDto, Property>();
}
答案 0 :(得分:0)
我已经解决了问题。
在我的PropertyForDetailedDto中,我必须为照片添加另一个DTO,而不是Model。
public ICollection<PhotosForDetailedDto> Photos { get; set;}
public ICollection<Photo> Photos { get; set; }
接下来,我必须同时映射PropertyForDetailedDto和上面的PhotoForDetailedDto
CreateMap<PropertyForDetailedDto, Property>();
CreateMap<Photo, PhotosForDetailedDto>();
我知道正确的属性以及属于该属性的所有对应属性。