如何使用AutoMapper将多个OBJECTS映射到一个对象 – asp.net mvc
发布时间:2020-12-16 00:08:39 所属栏目:asp.Net 来源:网络整理
导读:嗨全部/非常新的Auto-Mapper.我可以映射一对一的对象但是想知道是否可以将多个对象映射到一个对象或将多个对象映射到多个对象? 考虑我有以下情况…… 用户模型 public class User { public string FirstName { get; set; } public string LastName { get; s
嗨全部/非常新的Auto-Mapper.我可以映射一对一的对象但是想知道是否可以将多个对象映射到一个对象或将多个对象映射到多个对象?
考虑我有以下情况…… 用户模型 public class User { public string FirstName { get; set; } public string LastName { get; set; } public Company Company { get; set; } // 1 user work in 1 company } 公司模式 public class Company { public string CompanyName { get; set; } public string Website { get; set; } public ICollection<User> Users { get; set; } // 1 Company can have many users } UserCompanyViewModel 我想在一个视图中显示用户列表及其公司详细信息.. public class UserCompanyViewModel { public ICollection<User> Users { get; set; } ppublic ICollection<Company> Companies { get; set; } } 现在,是否可以在这种情况下进行映射,如果是,我可以在一个视图中显示,在编辑该视图时,我想再次使用更新的字段映射回各自的模型. 任何帮助将不胜感激…… thx 解决方法
在这种情况下,您真的使用多种(类型)对象作为源吗?从您定义的问题看,您的来源是用户列表 – 通过“我想显示用户列表及其公司详细信息”来判断.
如果是这种情况,虽然您不能隐式地执行此操作,但您可以使用TypeConverter轻松地执行地图: Mapper.CreateMap<ICollection<User>,UserCompanyViewModel>() .ConvertUsing<UserCompanyViewModelConverter>(); 然后将您的转换器定义为: public class UserCompanyViewModelConverter : ITypeConverter<ICollection<User>,UserCompanyViewModel> { public UserCompanyViewModel Convert(ResolutionContext context) { UserCompanyViewModel model = new UserCompanyViewModel(); ICollection<User> sourceUsers = (ICollection<User>)context.SourceValue; model.Users = sourceUsers; model.Companies = sourceUsers.Select(u => u.Company).Distinct().ToList(); return model; } } 然后,当您想要映射时,只需将您的用户集合用于某些用户并映射它: UserCompanyViewModel model = Mapper.Map<ICollection<User>,UserCompanyViewModel>(someUsers); 如果您确实需要将多个源类型映射到单个目标类型,则看起来this blog post包含一个可以帮助您的简短助手类.简而言之,AutoMapper并不完全支持这一点,因此您将制作几个Map请求来填充ViewModel.您将需要使用另一个TypeConverter来确保第二个调用不会替换第一个调用添加的公司. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 在MVC 4应用程序中处理带有自定义错误的Una
- asp.net-mvc – ASP.NET MVC AjaxForm没有正确更新部分视图
- asp.net-mvc – 如何在asp.net mvc中检查模型验证错误?
- asp.net – 项目模板和布局模板之间的区别
- asp.net – 为本地化设置TemplateField HeaderText动态
- asp.net-mvc – ASP.NET Web API无法在Azure上运行
- asp.net-mvc – Kendo DateTimePicker设置当前小时12:00 AM
- asp.net-mvc-4 – ASP.NET MVC 4移动功能
- ASP.net MVC 4是否有一些标准化的方式来引用JavaScript中的
- asp.net – 在实现URL路由时阻止对.ASPX页面的正常请求
推荐文章
站长推荐
- asp.net-mvc – 如何在Razor View中格式化lambda
- asp.net-mvc – ASP.NET MVC3,Html.TextAreaFor没
- ASP.NET 3.5会话ID的大小是多少?
- 删除时jQGrid主键问题
- asp.net-mvc-3 – 如何将现有文件夹与其所有子文
- asp.net – 如何在WebControls和HtmlControls上执
- asp.net-mvc-3 – 如何在控制器方法的新选项卡中
- asp.net – 从_layout.cshtml将常量值传递给Angu
- asp.net-mvc – ASP.NET MVC自定义T4模板的视图
- asp.net(C#)禁止缓存文件不让文件缓存到客户端
热点阅读