【发布时间】:2019-08-15 20:06:41
【问题描述】:
我有一个财产实体。每个属性可以有多个图像。 我有一个检索属性数据和图像的方法,但是当我在 post man 中测试 API 时只返回一个图像。
这是界面
IPropertyRepository:
Task<Property> GetProperty(int id);
属性库:
public async Task<Property> GetProperty(int id)
{
var property = await _context.Property.Include(ph => ph.Photos)
.FirstOrDefaultAsync(p => p.Id == id);
return property;
}
属性控制器:
[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; }
}
这里有什么想法吗?
自动映射器
public class AutoMapperProfiles : Profile
{
public AutoMapperProfiles()
{
CreateMap<UserForRegisterDto, User>();
CreateMap<PropertyForCreateDto, Property>();
CreateMap<PropertyToReturnDto, Property>();
CreateMap<PhotoForCreationDto, Photo>();
CreateMap<PropertyToReturnDto, Property>();
}
【问题讨论】:
-
FirstOrDefault是您只得到一张图片的原因 -
@Andrew 第一个或默认不返回第一个匹配 ID 的属性?
-
@Andrew:不,
FirstOrDefaultAsync适用于Property集合,而不是Property上的相关Photos。 -
你只能得到一个
Photo的唯一方法是,如果实际上只有一个关联的Photo。检查您的数据。有点不对劲。 -
@ChrisPratt 你说得对,一定是数据有问题
标签: c# asp.net asp.net-core entity-framework-core