C# 列表的自动映射配置
我有一个实体和相应的DTOC# 列表的自动映射配置,c#,.net,automapper,automapping,C#,.net,Automapper,Automapping,我有一个实体和相应的DTO public class PersonEntity { public int personId; public List<Contact> contacts; } public class PersonDto { public int personId; public List<int> contacts; } 公共类人格{ 公共国际人格; 公开名单联系人; } 公共类个人{ 公共国际人格; 公开名单联系人; }
public class PersonEntity {
public int personId;
public List<Contact> contacts;
}
public class PersonDto {
public int personId;
public List<int> contacts;
}
公共类人格{
公共国际人格;
公开名单联系人;
}
公共类个人{
公共国际人格;
公开名单联系人;
}
在AutoMapper中使用以下映射
Mapper.Map<PersonDto, Person>();
Mapper.Map();
我正在使用AutoMapper获取DTO,这不是问题
我正在解析DTO以返回实体,更新实体中的字段以进行保存操作,我对联系人列表不再感兴趣。Automapper抛出一个异常,因为它不喜欢将int列表映射到对象列表
请提供任何建议或更好的方法
编辑
使用的解决方案是
Mapper.CreateMap<PersonDto, Person>()
.ForMember(x => x.contacts, y => y.Ignore());
Mapper.CreateMap()
.ForMember(x=>x.contacts,y=>y.Ignore());
您可能知道,AutoMapper会在具有相同名称和类型的对象中查找属性,因此您很可能需要更改DTO或实体,使其匹配 您可以在配置中使用ignore方法吗
但是。您真的需要更新实体来保存吗?为什么不发送一个包含更改数据的命令。将列表类型弄混了,现在已更正。这非常有效。我将DTO标记为dirty或new,根据这些标志,我将通过automapper更新实体,然后通过存储库保存实体,因此无需为所有实体上的100个属性编写更新方法。Thanks我不想在DTO映射中重新创建对象关系的整个层次结构,这对于我试图实现的目标来说太过分了。opt.Ignore()有效
opt => opt.Ignore()