如何使用自动映射器协调列表?
例如给定一个类
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 *需要替换为检查以下内容的代码:
- 如果为空,则复制所有 RHS
- 如果不为null,则检查LHS 是否有相同的成员
Id
,如果没有则添加RHS 中的成员。 - 如果 LHS 具有相同的
Id
,只需更新Name
匹配实体的属性。 - 如果 LHS 具有
Id
RHS 中不存在的 ,请Id
从 LHS 中删除 。
我什至不知道从哪里开始,因为我无法在同一个 lambda 委托中获取 LHS 和 RHS 的实例来进行这种比较。至少没有一个内置选项似乎让我做这种映射。我认为这应该是一个相当常见的用例。
请帮忙。