Automapper只忽略一个集合属性

时间:2017-07-21 14:44:39

标签: c# collections automapper

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 String里面,我该如何实现呢?

我想我必须做以下事情: .ForSourceMember(x =&gt; x.CollectionB,opt =&gt; opt.Ignore());

在自动播放器文档中搜索,但无法找到使用集合执行此操作的方法。 有人可以帮助我吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

添加从ObjectAObjectB的映射,并且automapper将使用该映射。

自动映射器也不需要从IEnumberable<ObjectA>IEnumberable<ObjectB>的显式映射 - 只需要初始ObjectAObjectB - 它会推断其余的(显然你会仍然需要上面示例中的AB映射,但因为它们有自己的属性。)

答案 1 :(得分:0)

原来我不需要映射集合对象属性本身。只需要维护我之前的映射,如下所示:

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就可以解决这个问题! 希望这有助于某人!