我的方法仅在实体有两个图像时才返回一个图像

时间:2019-03-25 14:35:56

标签: c# asp.net asp.net-core entity-framework-core

我有一个房地产投资对象。每个属性可以具有多个图像。 我有一种方法可以检索属性数据以及图像,但是在邮递员中测试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>();
        }

1 个答案:

答案 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>();

我知道正确的属性以及属于该属性的所有对应属性。