c# - AutoMapper 不更新嵌套集合
问题描述
我正在尝试简化映射类的过程。为此,我正在使用 AutoMapper。如果没有一个类没有嵌套集合,那么一切都很好。但是,如果有人有,我在映射时遇到了麻烦。收集到一个类是覆盖。我找到了一个扩展AutoMapper.Collection。但这对我不起作用。
我正在开发一个 web api 项目,所以这里有一些代码:
// Classes for mapping
public class A_Dto
{
public int Id { get; set; }
public List<A_SubItem_Dto> SubItems { get; set; }
}
public class A_SubItem_Dto
{
public int Id { get; set; }
public string Value { get; set; }
public A_Dto A_MainObject { get; set; }
}
public class A_Resource
{
public int Id { get; set; }
public List<A_SubItem_Resource> SubItems { get; set; }
}
public class A_SubItem_Resource
{
public int Id { get; set; }
public string Value { get; set; }
}
// Configure AutoMapper
public void ConfigureServices(IServiceCollection services)
{
services.AddAutoMapper(cfg => cfg.AddCollectionMappers(), typeof(Startup));
}
// Configure profile class for mapping
public class AutoMapping : Profile
{
CreateMap<A_Dto, A_Resource>().ReverseMap()
.ForMember(m => m.Id, opt => opt.Ignore());
CreateMap<A_SubItem_Dto, A_SubItem_Resource>().ReverseMap()
.EqualityComparison((sir, si) => sir.Id == si.Id);
}
// Controller action with simple test
public async Task<IActionResult> Put(/*...*/)
{
// Test
var aDto = new A_Dto()
{
Id = 7,
SubItems = new List<A_SubItem_Dto>()
{
new A_SubItem_Dto() { Id = 2, Value = "_2_" },
new A_SubItem_Dto() { Id = 9, Value = "_9_" }
}
};
var aResource = new A_Resource()
{
Id = 7,
SubItems = new List<A_SubItem_Resource>()
{
new A_SubItem_Resource() { Id = 2, Value = "_222222_" }
}
};
_mapper.Map(aResource, aDto);
}
结果aDto
对象包含新集合,其中一个元素为aResource.SubItems
你能告诉我,我做错了什么吗?
解决方案
推荐阅读
- ios - 从断开连接的蓝牙设备捕获输入时,AVAudioSession 服务重置
- r - 创建一个优化模型,以便选择开始日期和结束日期会产生一些结果
- c - 未初始化条件 Valgrind
- python - WIndows - Python 字符串到时间
- delphi - Delphi Rio 打补丁后无法启动
- typescript - 使用泛型类型时打字稿类型缩小不起作用
- javascript - paypal API v2如何在交易完成后重新加载
- python - 删除 2dlists 字典中的相似值
- javascript - 简单的 localStorage 刷新代码不起作用
- r - R将表格的一部分合并到一列中