Я использую AutoMapper в своем проекте, и мне нужно привести объект домена с включенным объектом в модель представления.Включенный объект - это текущее состояние объекта домена, который имеет текущие характеристики объекта.Модель представления имеет свойства характеристик на том же уровне, что и другие свойства (без включенного объекта), потому что я думаю, что это лучшее решение.Я пытался использовать этот код в MapperProfile:
CreateMap<DomainEntity, ViewModel>
.ForMember(...)
...
.ForPath(dest => dest, opt => opt.MapFrom(source =>
Mapper.Map<IncludedEntity, ViewModel>(source.Child)));
Но это решение вызывает исключение " Mapper не инициализирован. Вызовите Initialize с соответствующей конфигурацией. Если вы пытаетесь использовать экземпляры Mapper через контейнер или иным образомубедитесь, что у вас нет вызовов статических методов Mapper.Map, и если вы используете методы расширения ProjectTo или UseAsDataSource, убедитесь, что вы передаете соответствующий экземпляр IConfigurationProvider."
Iиспользую Autofac и Mapper.Как я могу это сделать?
ОБНОВЛЕНИЕ
DomainEntity:
public class Balloon : BaseIdEntity
{
public int Id { get; set; }
public string FactoryNumber { get; set; }
/// <summary>
/// it's CurrentState of balloon.
/// </summary>
public BalloonSnapshot ActualSnapshot { get; set; }
public int? ActualSnapshotId { get; set; }
}
CurrentState:
public class BalloonSnapshot : BaseIdEntity
{
public int Id { get; set; }
/// <summary>
/// It's parent Domaint entity.
/// </summary>
public Balloon Balloon { get; set; }
public int BalloonId { get; set; }
public DateTime Date { get; set; }
}
ViewModel:
public class BalloonDetailDto
{
public int Id { get; set; }
public string FactoryNumber { get; set; }
public DateTime? Date { get; set; }
}
ОБНОВЛЕНИЕ 2
Мои сопоставления:
CreateMap<Balloon, BalloonDetailDto>
.ForPath(dest => dest, opt => opt.MapFrom(source =>
Mapper.Map<BalloonSnapshot, BalloonDetailDto>(source)));
CreateMap<BalloonSnapshot, BalloonDetailDto>()
.ForMember(s => s.Id, opt => opt.Ignore());
Итак, я хочу привести DomaintEntity к одной строке:
var viewModel = _mapper.Map<Balloon, BalloonDetailDto>(balloon);