private static void ConfigureConfigurationMapping() { Mapper.CreateMap <ConfigDirectory, ConfigDirectoryViewModel>() .ForMember(vm => vm.ParentId, m => m.MapFrom(dm => dm.ParentDirectory.Id)) .ForMember(vm => vm.ConfigValues, m => m.MapFrom(dm => dm.ChildValues)) .ForMember(vm => vm.ChildDirectories, m => m.MapFrom(dm => dm.ChildDirectories)); Mapper.CreateMap <ConfigDirectory, ConfigDirectoryReferenceViewModel>(); Mapper.CreateMap <ConfigValue, ConfigValueViewModel>() .ForMember(vm => vm.ParentSectionId, m => m.MapFrom(dm => dm.ParentDirectory.Id)) .ForMember(vm => vm.Type, m => m.MapFrom(dm => dm.SettingTypeString)) .ForMember(vm => vm.Value, m => m.MapFrom(dm => dm.GetValue())) // todo: enum fields to be mapped here .ForMember(vm => vm.AllowedValues, m => m.Ignore()); Mapper.CreateMap <ConfigValueUpdateViewModel, ConfigValue>().ConvertUsing(model => { ConfigValue configValue = new ConfigValue(); configValue.Id = model.Id; configValue.Description = model.Description; configValue.SettingTypeString = model.Type; configValue.SetValue(model.Value, model.GetValueType()); return(configValue); }); Mapper.CreateMap <ConfigDirectoryUpdateViewModel, ConfigDirectory>().IgnoreAllNonExisting(); }