假设您有 DTO 和实体之间的映射。假设 DTO 包含一些您不希望映射到实体的属性。我如何告诉 Automapper 不映射此属性?我知道您可以告诉 Automapper 不要映射目标属性。但是,这对我没有帮助,因为我想告诉 Automapper 不要映射源属性。这是一个例子:
public class MyDto
{
int A { get; set; }
int B { get; set; }
int DoNotMapMeToTheEntity { get; set; }
}
public class MyEntity
{
int A { get; set; }
int B { get; set; }
}
如您所见,我不希望 Automapper 将
DoNotMapMeToTheEntity
映射到 MyEntity
。现在,你可能会说,既然 DoNotMapMeToTheEntity
不存在于 MyEntity
中,Automapper 就不会映射它,所以我没什么可担心的。但如果将来有人将 DoNotMapMeToTheEntity
添加到 MyEntity
呢?现在 Automapper 会映射它,这是我不想要的。
我寻找忽略源属性的选项,但找不到它。
只需使用
ForMember(x => x.C, opt => opt.Ignore()
,如下所示:
public class MySrc
{
public int A { get; set; }
public int B { get; set; }
public int C { get; set; }
}
public class MyDest
{
public int A { get; set; } = 1;
public int B { get; set; } = 1;
public int C { get; set; } = 1;
}
var src = new MySrc { A = 5, B = 6, C = 7 };
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<MySrc, MyDest>().ForMember(x => x.C, opt => opt.Ignore());
});
var mapper = new Mapper(config);
MyDest dest = mapper.Map<MyDest>(src);
Console.WriteLine(JsonSerializer.Serialize(dest));