Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表的自动映射配置_C#_.net_Automapper_Automapping - Fatal编程技术网

C# 列表的自动映射配置

C# 列表的自动映射配置,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; } 公共类人格{ 公共国际人格; 公开名单联系人; } 公共类个人{ 公共国际人格; 公开名单联系人; }

我有一个实体和相应的DTO

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()