1

如何使用自动映射器协调列表?

例如给定一个类

public class SomeEntity
{
    public Guid Id {get; set;}
    public string Name {get; set;}
}

还有一堂课

public class SomeAggregate
{
    public IEnumerable<SomeEntity> EntityEnumeration {get;set;}
}

为了这个问题(我的实际要求有点不同)。我需要将 SomeAggregate 的一个实例映射到它的另一个实例。我想使用 AutoMapper,但我需要自定义EntityEnumeration填充方式。

这就是我想要实现的目标:

Mapper.CreateMap<SomeAggregate,SomeAggregate>()
    .ForMember(d => d.SomeAggregate, *** MISSING LOGIC ***);

Mapper.Map(newInstance, existing);

* MISSING LOGIC *需要替换为检查以下内容的代码:

  1. 如果为空,则复制所有 RHS
  2. 如果不为null,则检查LHS 是否有相同的成员Id,如果没有则添加RHS 中的成员。
  3. 如果 LHS 具有相同的Id,只需更新Name匹配实体的属性。
  4. 如果 LHS 具有IdRHS 中不存在的 ,请Id从 LHS 中删除 。

我什至不知道从哪里开始,因为我无法在同一个 lambda 委托中获取 LHS 和 RHS 的实例来进行这种比较。至少没有一个内置选项似乎让我做这种映射。我认为这应该是一个相当常见的用例。

请帮忙。

4

0 回答 0