【问题标题】:Automapper ignore just one collection attributeAutomapper 只忽略一个集合属性
【发布时间】:2017-12-27 16:13:58
【问题描述】:
public class ObjectA
{
    string abc {get; set;}
}

public class ObjectB
{
    string abc {get; set;}
    string bla {get; set;}
}

public class A
{
    public string x { get; set; }
    public ICollection<ObjectA> CollectionA {get; set;}
}

public class B
{
    public string x { get; set; }

    public ICollection<Object B> CollectionB { get; set; }
}



cfg.CreateMap<A, B>()
    .ForMember(dest => dest.CollectionB, opt => opt.MapFrom(src => src.CollectionA));

您好,我想保留 Collection 但忽略里面的 bla 字符串,我该如何实现?

我想我必须这样做: .ForSourceMember(x => x.CollectionB, opt => opt.Ignore());

在 automapper 文档中进行了搜索,但找不到使用集合执行此操作的方法。 有人可以帮助我吗? 谢谢!

【问题讨论】:

    标签: c# collections automapper


    【解决方案1】:

    原来我不需要映射集合对象属性本身。只需要维护我之前的映射,像这样:

    cfg.CreateMap<A, B>()
        .ForMember(dest => dest.CollectionB, opt => opt.MapFrom(src => src.CollectionA))
    

    和对象的关系,像这样:

    cfg.CreateMap<ObjectB, ObjectA>()
        .ForSourceMember(src => src.bla, dest => dest.Ignore());
    

    这样 automapper 会解析集合! 希望这对某人有帮助!

    【讨论】:

      【解决方案2】:

      添加从ObjectAObjectB 的映射,automapper 将使用它。

      Automapper 也不需要从 IEnumerable&lt;ObjectA&gt;IEnumerable&lt;ObjectB&gt; 的显式映射 - 只需最初的 ObjectAObjectB - 它会推断其余部分(显然你仍然需要 AB但是,在上面的示例中映射,因为它们有自己的属性)。

      【讨论】:

      • 我面临:CollectionB ---> AutoMapper.AutoMapperMappingException:缺少类型映射配置或不支持的映射。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多