Эта проблема является частью проекта .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.
Спасибо за ваше время и помощь. Я действительно застрял здесь.