Automapper ForAllOtherMembers(s => s.Ignore)抛出未映射的错误版本6.2.1

时间:2018-05-10 02:24:15

标签: c# .net automapper core

我已经阅读了许多关于跳过未映射属性的SO帖子,但必须有一个我不理解的细微差别。我在运行时获取了我想要忽略的属性的未映射异常。我正在做的是增量投影。我有一个大的读取模型,我从数据库中拉出数据展平。除少数数据点外,有多行包含相同的数据。您可以将此视为左连接。

 cfg.CreateMap<Readmodel, mappedDocument>(MemberList.None)
                .ForMember(dest => dest.Id, opt => opt.MapFrom(s => s.Id))                   
                .ForAllOtherMembers(s => s.Ignore());

 cfg.CreateMap<Readmodel, mappedDocumentChildObject>(MemberList.None)
                .ForMember(dest => dest.Id, opt => opt.MapFrom(s => s.ChildId))
                .ForMember(dest => dest.Name, opt => opt.MapFrom(s => s.ChildName))                
                .ForAllOtherMembers(s => s.Ignore());

此数据的示例如下所示:

Id     Name      ChildId   ChildName
1      Test      11        ChildA
1      Test      12        ChildB

我想要做的是循环遍历这些行,首先从数据中映射顶级对象,缓存它,然后在下一次传递中将其从缓存中拉出来,并在它们出现时添加子对象。

对象可能如下所示:

public class Parent
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<Child> Children { get; set; }  
}

public class Child
{
    public int Id { get; set; }
    public string Name { get; set; }
}

我不想明确创建个别忽略调用。我尝试了扩展(我知道它不再有效)。

我尝试创建一个使用CreateMap的初始ForAllMembers(s => s.Ignore()),然后创建一个映射我关注的属性的特定CreateMap

我也试过MemberList.None,但它仍然在运行时抛出。

我觉得我已经阅读了SO帖子,GitHub帖子和文档,但我仍然无法使用它。

感谢任何帮助。

0 个答案:

没有答案