EDIT: заголовок неправильный, я пытаюсь отобразить из исходного списка в исходный список вложенной модели.Карта AutoMapper из исходной вложенной коллекции в другую коллекцию
У меня возникли проблемы с попыткой сопоставить список с другим, указанным в вложенной модели. Вид и несплошность. Проблема в том, что я не знаю, как делать сопоставления.
Вот мой набор вверх следовали моей неудачной попытке отображения:
public class DestinationModel
{
public DestinationNestedViewModel sestinationNestedViewModel { get; set; }
}
public class DestinationNestedViewModel
{
public List<ItemModel> NestedList { get; set; }
}
public class SourceModel
{
public List<Item> SourceList { get; set; }
}
Где товар и ItemModel уже отображение, определенный между ними
Я не могу сделать это таким образом ...
Mapper.CreateMap<SourceModel, DestinationModel>()
.ForMember(d => d.DestinationNestedViewModel.NestedList,
opt => opt.MapFrom(src => src.SourceList))
ОШИБКА:
Выражение «d => d.DestinationNestedViewMode l.NestedList»должен решить имя member.Parameter верхнего уровня: lambdaExpression
Затем я попробовал что-то вроде этого:
.ForMember(d => d.DestinationNestedViewModel,
o => o.MapFrom(t => new DestinationNestedViewModel { NestedList = t.SourceList }))
Проблемы есть NestedList = t.SourceList. Они содержат разные элементы, ItemModel и Позиция соответственно. Поэтому их нужно сопоставить.
Как это сделать?
Я не уверен, если я правильно понимаю , но я думаю, вам нужно создать сопоставление от Item to ItemModel, поэтому AutoMapper знает, как сопоставить объекты Item объектам ItemModel. –
Существует сопоставление, которое уже определено между Item и ItemModel, но отображение не запускается, потому что NestedList принадлежит DestinationModel , который, в свою очередь, принадлежит DestinationNestedViewModel. Automapper не может обрабатывать 2 уровня моделей при сопоставлении (по крайней мере, не так, как я это пробовал). – getit