У меня возник вопрос о том, чтобы автомодулировать объекты рамки сущности, которые были «глубоко загружены». У меня есть объект Project, у которого есть член под названием «Задачи», который представляет собой коллекцию. И каждая задача имеет член под названием Works, который является коллекцией. Когда проект загружен глубоко, все участники Tasks и их Works заполнены. Это выглядит следующим образом:Automapper и глубокая загрузка
-- Project
-- Task 1
-- Work 1
-- Work 2
-- Task 2
-- Work 3
Я понял, как отобразить на 1 уровень глубоко используя распознаватель так:
CreateMap<DataAccess.Task, Entities.Task>()
.ForMember(obj => obj.Description, obj => obj.MapFrom(src => src.Description))
.ForMember(obj => obj.Estimate, obj => obj.MapFrom(src => src.Estimate))
.ForMember(obj => obj.Id, obj => obj.MapFrom(src => src.ID))
.ForMember(obj => obj.ProjectId, obj => obj.MapFrom(src => src.Project))
.ForMember(obj => obj.TaskName, obj => obj.MapFrom(src => src.TaskName))
.ForMember(obj => obj.Visible, obj => obj.MapFrom(src => src.Visible))
.ForMember(obj => obj.WorkItems, obj => obj.ResolveUsing<WorkItemsResolver>().FromMember(src => src.Works));
public class WorkItemsResolver : ValueResolver<EntityCollection<DataAccess.Work>, ICollection<Entities.Work>>
{
#region Overrides of ValueResolver<List<Task>,List<Task>>
protected override ICollection<Entities.Work> ResolveCore(EntityCollection<DataAccess.Work> source)
{
Mapper.EntitiesMapper entitiesMapper = new EntitiesMapper();
return source.Select(wk => entitiesMapper.Map<Entities.Work>(wk)).ToList();
}
#endregion
}
Однако, я не могу понять, как идти 2 уровня глубоко т.е. быть способный отображать объект верхнего уровня (Project) и иметь его дочерние списки (и их дочерние списки), также сопоставляться с их бизнес-объектами-компиляторами.
Кто-нибудь знает, возможно ли это с помощью Automapper?
Благодаря
Все тихо. Нет собеседников? – onefootswill