私はこのようなものを持っています:
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());
使用している DomainEntity から ApiEntity を取得するにはvar apiEntity = Mapper.Map<DomainEntity, ApiEntity>(myDomainEntity);
使用している ApiEntity からマージされた DomainEntity を取得するにはvar domainEntity = Mapper.Map(myApiEntity, myDomainEntity);
ただし、これを使用する場合、プロパティOtherEntities
とは、 からへのマッピングを呼び出す前に値があった場合でも、 にAnotherEntities
設定されます。値を置き換えるだけでなく、実際にマージするようにするにはどうすればよいですか?null
myApiEntity
myDomainEntity
助けてくれてありがとう。