关于 Automapper 映射定义,我有一个非常简单的问题。我的意图是通过 Automapper 深度克隆对象,而忽略'Id'属性,这就是为什么我选择它来自定义映射的原因。
public interface IEntity<T>
{
T Id { get; }
}
public abstract class Entity : IEntity<Guid>
{
public Guid Id { get; set; }
}
我所有的实体都是从Entity
类派生的,我只是想忽略对象嵌套层次结构中的所有Id
属性,而不必过于明确地说明映射定义。
到目前为止,我已经拿出下面的代码来进行克隆,但是如何为嵌套属性而不是仅针对根忽略Id
属性映射。
public static T AutomapperClone<T>(this T source)
where T : IEntity<Guid>
{
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<T, T>()
.ForMember(d => d.Id, o => o.Ignore());
});
// checking configuration validity
config.AssertConfigurationIsValid();
// creating mapper
var mapper = config.CreateMapper();
var copy = mapper.Map<T, T>(source);
return copy;
}
这个想法是所有实体都获得其新ID,而不是使用相同的映射ID。它可以通过Automapper完成吗?
感谢您的反馈。