asp.net – AutoMapper:将集合中的项目值从一个实例合并到另一个实例
|
我试图弄清楚如何使用AutoMapper合并两个复杂的对象实例.父对象具有一个属性,该属性是子对象的集合: public class Parent
{
public List<Child> Children { get; set; }
}
public class Child
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
}
我有两个Parent实例: var parentOne = new Parent()
{
Children = new List<Child>() { new Child() { A = "A",B = "B",C = "C" } }
};
var parentTwo = new Parent()
{
Children = new List<Child>() { new Child() { C = "Updated value" } }
};
我希望能够将parentOne中的值合并到parentTwo,而不会覆盖parentTwo中的C值.我创建的地图如下: Mapper.CreateMap<Parent,Parent>()
.ForMember(parent => parent.Children,opt => opt.UseDestinationValue());
Mapper.CreateMap<Child,Child>()
.ForMember(child => child.C,opt => opt.Ignore());
Mapper.Map(parentOne,parentTwo);
据我了解,AutoMapper将创建复杂属性的新实例,除非您使用UseDestinationValue()选项.但是,执行上面的代码后,parentTwo.C等于“C”而不是“更新的值”. 在我看来,它保留了List< Child>的实例,但它在List中创建了Child的新实例.不幸的是,我正在努力想出一个能够保留Child的每个实例的地图. 任何帮助将非常感激! 解决方法据我所知,AutoMapper不支持这一点,我相信这是因为支持这种情况的复杂性.事实上,UseDestinationValue确实只对您推测的集合实例起作用 – 而不是集合元素.在您的场景中,每个列表中只有一个项目(我假设)您希望子项列表对象“同步”更新(即第一个元素更新第一个元素,第二个更新第二个等等).但是如果一个列表为3而另一个列表有5个呢?如果没有目标值,“UseDestinationValue”是什么意思?那么如何在两个子列表中选择要映射的desintation对象?在数据库场景中(听起来像是问题的基础),会有唯一的ID或某种外键,可以让你匹配子对象以知道映射到哪一个.在这种情况下,编写一个支持UseDestinationValue的通用映射对于集合的各个元素来说太难了(IMO). (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 在asp:Button中包装文本
- asp.net-mvc – 当tryUpdateModel无法在asp.net mvc 3中更新
- 在ASP.NET Web服务(ASMX)的JSON请求中,什么时候区分大小写是
- asp.net – IIS 8 – 默认文档 – 找不到资源
- ASP.NET分析器错误无法加载代码
- 使用asp.net核心身份将数据存储在cookie中
- asp.net – 进程服务应用程序池“经典.NET AppPool”遭受与
- asp.net-mvc – 当我不知道内容类型时如何返回文件结果
- 停止代码构建器转义单引号ASP.NET MVC 2
- 为什么ASP.NET框架在响应中添加“X-Powered-By:ASP.NET”H
- asp.net – 如何从SQL Server 2008本身获取客户端
- asp.net – 如何在MVC 3中设置图表系列颜色?
- asp.net – 如何使用会员资格提供者与EF代码优先
- asp.net-web-api2 – SwashBuckle / Swagger –
- asp.net – RequiredFieldValidator在文本上放置
- asp.net-mvc – ASP.Net C#Razor显示编码的HTML而
- 为什么我不能在ASP.net MVC中使用服务器控件?
- ASP.NET;几个会话变量或“容器对象”?
- asp.net-mvc – 使用ViewModel的MVC 3动态表单
- ASP.NET Web.config转换将无法在安装程序中使用
