gpt4 book ai didi

c# - AutoMapper 将目标对象上的属性设置为 null

转载 作者:太空狗 更新时间:2023-10-29 20:13:52 24 4
gpt4 key购买 nike

我有这样的东西:

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);

但是当使用它时,属性 OtherEntitiesAnotherEntities设置为 null - 即使它们在从 myApiEntity 调用映射之前具有值至 myDomainEntity .我怎样才能避免这种情况,使它们真正合并而不仅仅是替换值?

感谢您的帮助。

最佳答案

我认为您正在寻找 UseDestinationValue 而不是 Ignore:

Mapper.CreateMap<ApiEntity, DomainEntity>().
ForSourceMember(e => e.OtherEntitiesCount, opt => opt.UseDestinationValue()).
ForMember(e => e.OtherEntities, opt => opt.UseDestinationValue()).
ForMember(e => e.AnotherEntities, opt => opt.UseDestinationValue());

关于c# - AutoMapper 将目标对象上的属性设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16125997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com