如何使用AutoMapper将多个OBJECTS映射到一个对象 – asp.net mvc 3
发布时间:2020-05-23 21:42:47 所属栏目:asp.Net 来源:互联网
导读:嗨全部/非常新的Auto-Mapper.我可以映射一对一的对象但是想知道是否可以将多个对象映射到一个对象或将多个对象映射到多个对象? 考虑我有以下情况…… 用户模型 public class User { public string FirstName { get; set; } public string LastName { get; se
|
嗨全部/非常新的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-core – 具有取消令牌的自定义AspCore中间件
- 在IIS托管的asp.net Web应用程序中打开页面时“无法找到资源
- asp.net-mvc – ASP.NET MVC:在其中生成带有自定义html的动
- asp.net – app_offline替代方案
- asp.net-mvc – 在ASP.NET MVC 4中的用户控制等效
- asp.net-mvc – 对每个动作调用使用MVC Miniprofiler
- asp.net – 网格视图边界的宽度
- ASP.Net Web应用程序安全性不适用于IIS 7?
- ASP.Net从CodeBehind打开浏览器中的新标签页
- Asp.net静态可变生命周期刷新和PostBack
