嵌套列表和Automapper.Map

时间:2018-11-01 15:18:49

标签: c# asp.net-web-api automapper dto

所以我有2个对象,AlbumDto和AlbumMediaDto。

public class AlbumDto
{
    public int AlbumId { get; set; }

    public string Title { get; set; }

    public DateTimeOffset? AlbumDate { get; set; }

    public AlbumMediasDto Media { get; set; }// list of media
}

我在仓库中有一个方法可以返回专辑列表(每张专辑都有上面提到的属性,其中包括媒体列表)

var albumsForChild = await GetTenantRepository<IAlbumRepository>().GetAlbumsForChild(childId);

因此,我不确定如何使用AutoMapper将它们映射到这些Dto(我知道我总是可以使用嵌套的foreach并相应地填充所有内容,但是想学习如何正确地进行此操作)。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

您可以使用JSon反序列化吗?如果是的话,下面是您的解决方案。

业务逻辑:

public IEnumerable<AlbumDto> GetAllAlbums()
{
    var allAlbums = _theApiWrapper.ExecuteGet<IEnumerable<AlbumDto>>("theApiRoute");
    return allAlbums;
}

存储库:

public T ExecuteGet<T>(string endpoint)
{
    var uri = $"https://apiurl.company.com/api/v1/{endpoint}";

    using (HttpClient client = new HttpClient())
    {
        var x = client.GetAsync(uri);
        var result = x.Result.Content.ReadAsStringAsync().Result;

        return JsonConvert.DeserializeObject<T>(
            result, 
            new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }
            );
    }
}