我已经阅读了许多关于跳过未映射属性的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帖子和文档,但我仍然无法使用它。
感谢任何帮助。