Сопоставить элементы списка с элементом вложенного класса, используя Automapper с Entity Framework Core - PullRequest
0 голосов
/ 24 октября 2019

Эта проблема является частью проекта .NET Core API с использованием моделей / контроллеров.

Я пытаюсь сопоставить сущности с вложенной моделью, используя Automapper.

Мой ожидаемый результат:

{
    "insertedAt": "2019-10-17T17:03:55.813",
    "Timestamps": [
        {
                "timestamp": "2019-10-14T19:00:00", "value": 55.55

        },
        {
                "timestamp": "2019-10-14T20:00:00", "value": 55.55

        }
    ]

}

Мой фактический результат:

[
    {
        "insertedAt": "2019-10-09T00:00:00",
        "timestamps": null,
    },
    {
        "insertedAt": "2019-10-09T00:00:00",
        "timestamps": null,
    }
]

Мой ввод IEnumerable для типа "ResilienceForecast" (см. Ниже). Поле «InsertedAt» является уникальным. Думайте об этом как о метаданных.

Здесь, в моих сущностях (ResilienceForecast.cs):

namespace tradingdashboard.Entities
{
    public class ResilienceForecast
    {
        [Key]
        public Guid Id { get; set; }

        [Required]
        public DateTime InsertedAt { get; set; }

        [Required]
        public DateTime Timestamp { get; set; }

        [Required]
        public double Value { get; set; }

    }
}

Мой метод контроллера

[HttpGet()]

public ActionResult<IEnumerable<ResilienceForecastDto>> GetResilienceForecasts(
    [FromQuery] ResilienceForecastsResourceParameters resilienceForecastsResourceParameters)
{
    var resilienceForecastsFromRepo = _tradingDashboardRepository.GetResilienceForecasts(resilienceForecastsResourceParameters);
    return Ok(_mapper.Map<IEnumerable<ResilienceForecastDto>>(resilienceForecastsFromRepo));
}

Мой профиль (ResilienceForecastProfile.cs)

namespace tradingdashboard.Profiles
{
    public class ResilienceForecastProfile : Profile
    {
        public ResilienceForecastProfile()         
        {
            CreateMap<ResilienceForecast, ResilienceForecastDto>()
                .ReverseMap();
        }
    }
}

И, наконец, мои модели просмотра:

namespace tradingdashboard.Models
{
    public class ResilienceForecastViewDto
    {
        public DateTime InsertedAt { get; set; }
        public DateTime Timestamp { get; set; }
        public double Value { get; set; }
    }
    public class TimestampsModelDto
    {
        public DateTime Timestamp { get; set; }
        public double Value { get; set; }
    }
    public class ResilienceForecastDto
    {
        public DateTime InsertedAt { get; set; }
        public IList<TimestampsModelDto> Timestamps { get; set; }
    }

}

Для краткости - не включены - это хранилище / интерфейс для анализа результатов в списке и фильтрации по критериям.

Итак, ResilienceForecastDto - модель, к которой я стремлюсь, но безуспешно.

Я попытался сделать несколько попыток, используя сопоставление с .MemberFor (), .MemberForAll () и .RevervseMap ().

Может также стоит отметить, что все данные поступают из одной таблицы SQL.

Спасибо за ваше время и помощь. Я действительно застрял здесь.

...