使用AutoMapper,源是否可以完全映射到目标上的属性?

时间:2011-05-05 05:15:45

标签: asp.net-mvc automapper

我正在尝试设置AutoMapper个人资料,并且我试图从实体映射到此视图模型:

public class CompositeViewModel
{
    public ContactViewModel Contact;
    public CompanyViewModel Company;
}

我当前的个人资料包含来自联系人的映射 - > ContactViewModel and Company - > CompanyViewModel都完美运行。但我想要做的是将单个Contact映射到此复合视图模型中。 Contact类的实例Company作为属性,如:contact.Company

当我这样做时:

var viewModel = Mapper.Map<Contact, CompositeViewModel>(contact);

它正确填写CompositeViewModel.Company contact.Company中的详细信息,但我希望所有实体属性都复制到CompositeViewModel.Contact

目前我能看到的唯一解决方案是删除ContactViewModel.Contact属性并将其展平,并使用我需要的所有Contact属性。但这似乎应该是不必要的。

如果我还不够清楚,请告诉我,我会尽力详细说明。感谢。

1 个答案:

答案 0 :(得分:1)

更简单的是做类似

的事情
var viewModel=new viewModel
viewModel.Contact=Mapper.Map<Contact,ContactViewModel>(contact)
viewModel.Company=Mapper.Map<Company,CompanyViewModel>(contact.Company)

如果您对上述方法不满意,请阅读自动播放器文档以了解映射的自定义如何工作。