Вложенные списки и Automapper.Map - PullRequest
0 голосов
/ 01 ноября 2018

Итак, у меня есть 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);

Так что я не уверен, как сопоставить их с этими Dtos, используя AutoMapper (я знаю, что я всегда могу использовать вложенный foreach и заполнять все соответственно, но думал о том, как научиться делать это правильно).

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 01 ноября 2018

Можете ли вы работать с десериализацией JSon? Если да, то ниже может быть ваше решение.

Бизнес-логика:

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

Repository:

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 }
            );
    }
}
...