In meiner Web-API-Controller-Methode, bevor ich die UpdatePlaceDTO
zu PlaceMaster
zuordnen, mache ich einen Datenbankaufruf zum Auffüllen der Eigenschaften, die nicht von der Map abgedeckt sind, aber aus irgendeinem Grund macht AutoMapper diese Eigenschaften null .AutoMapper 4.2 ignoriert Eigenschaften im Profil
Ich habe viele der Lösungen für IgnoreExistingMembers versucht, aber keiner von ihnen funktioniert.
Das ist, was ich habe
public class PlaceMapperProfile : Profile
{
protected override void Configure()
{
// TO DO: This Mapping doesnt work. Need to ignore other properties
//CreateMap<UpdatePlaceDto, PlaceMaster>()
// .ForMember(d => d.Name, o => o.MapFrom(s => s.Name))
// .ForMember(d => d.Description, o => o.MapFrom(s => s.Description))
// .ForMember(d => d.ParentPlaceId, o => o.MapFrom(s => s.ParentPlaceId))
// .ForMember(d => d.LeftBower, o => o.MapFrom(s => s.LeftBower))
// .ForMember(d => d.RightBower, o => o.MapFrom(s => s.RightBower)).IgnoreAllNonExisting();
}
}
Dies ist die Erweiterung
istpublic static IMappingExpression<TSource, TDestination> IgnoreAllNonExisting<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
foreach (var property in expression.TypeMap.GetUnmappedPropertyNames())
{
expression.ForMember(property, opt => opt.Ignore());
}
return expression;
}
I Module verwendet habe, die Mapper meiner depedencies zu injizieren
protected override void Load(ContainerBuilder builder)
{
//register all profile classes in the calling assembly
var profiles =
from t in typeof(Navigator.ItemManagement.Data.MappingProfiles.PlaceMapperProfile).Assembly.GetTypes()
where typeof(Profile).IsAssignableFrom(t)
select (Profile)Activator.CreateInstance(t);
builder.Register(context => new MapperConfiguration(cfg =>
{
foreach (var profile in profiles)
{
cfg.AddProfile(profile);
}
})).AsSelf().SingleInstance();
builder.Register(c => c.Resolve<MapperConfiguration>().CreateMapper(c.Resolve))
.As<IMapper>()
.SingleInstance();
}
ich gesehen habe in einem Thread, der _mapper.Map tatsächlich ein neues Objekt erstellt, so wie wir es machen, um "Add-on" zu der vorhandenen Eigenschaft v zu sortieren Alues?
Gut gemacht, um die Lösung selbst zu finden! –