У меня есть что-то вроде этого:AutoMapper настройки свойств к нулю на объект назначения
public class DomainEntity
{
public string Name { get; set; }
public string Street { get; set; }
public IEnumerable<DomainOtherEntity> OtherEntities { get; set; }
public IEnumerable<DomainAnotherEntity> AnotherEntities { get; set; }
}
public class ApiEntity
{
public string Name { get; set; }
public string Street { get; set; }
public int OtherEntitiesCount { get; set; }
}
И следующая конфигурация картографа:
Mapper.Configuration.AllowNullCollections = true;
Mapper.CreateMap<DomainEntity, ApiEntity>().
ForSourceMember(e => e.OtherEntities, opt => opt.Ignore()).
ForSourceMember(e => e.AntherEntities, opt => opt.Ignore()).
ForMember(e => e.OtherEntitiesCount, opt => opt.MapFrom(src => src.OtherEntities.Count()));
Mapper.CreateMap<ApiEntity, DomainEntity>().
ForSourceMember(e => e.OtherEntitiesCount, opt => opt.Ignore()).
ForMember(e => e.OtherEntities, opt => opt.Ignore()).
ForMember(e => e.AnotherEntities, opt => opt.Ignore());
Чтобы получить ApiEntity от DomainEntity Я использую var apiEntity = Mapper.Map<DomainEntity, ApiEntity>(myDomainEntity);
Чтобы получить объединенную DomainEntity из ApiEntity, я использую var domainEntity = Mapper.Map(myApiEntity, myDomainEntity);
Но при использовании свойства OtherEntities
и AnotherEntities
установлены на null
- даже когда они имели значения перед вызовом отображения от myApiEntity
до myDomainEntity
. Как я могу избежать этого, так что они действительно сливают, а не только заменяют значения?
Спасибо за любую помощь.
Какую версию 'AutoMapper' вы используете? Ваш сценарий работает нормально для меня на '2.2.1'. – Mightymuke
Я использую последнюю версию, доступную на NuGet, которая в настоящее время является 2.2.1 –