Web API denetleyici yöntemimde, UpdatePlaceDTO
'u PlaceMaster
ile eşleştirmeden önce, bir Web çağrısı yapıp Harita'nın kapsanmayan özelliklerini doldurmak için bir veritabanı çağrısı yapıyorum ancak bazı nedenlerle AutoMapper bu özellikleri null yapar .AutoMapper 4.2 profildeki özellikleri göz ardı etmiyor
var mappedPlaceMaster = _mapper.Map<PlaceMaster>(placeMasterDTO);
// mappedPlaceMaster.EntityId is null
Birçok çözümü IgnoreExistingMembers'e denedim, ancak bunların hiçbiri çalışmıyor.
Bu
ben Gördüğümprotected 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();
}
benim depedencies için eşleştiricisi enjekte etmek Modülleri kullandım
public 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;
}
uzantısıdır
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();
}
}
ne var Bazı thread _mapper.Map aslında yeni bir nesne yaratır, böylece var olan varlığa "eklenti" yapmak için nasıl yaparız? edilen değerler?
Çözümü bulmak için kendiniz yapın! –