我有这个简单的数据模型:
// Model
public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
.... Another values here ....
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Address Address { get; set; }
.... Another values here ....
}
// ViewModel
public class PersonViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
}
我想将{{1>}的值(使用 AutoMapper )映射到相应的属性(如果属性应该位于根对象中或子对象内,AutoMapper会发现该属性) 。 请记住,AutoMapper不应创建Person对象和Address (必须手动创建对象以在自动映射之前填充其他属性),AutoMapper使用已存在的对象。例如:
PersonViewModel
如何让自动映射适用于人员属性和地址属性?
我应该添加两个映射规则(对于地址和人员),并执行var addressObj = new Address
{
... Filling some values...
};
var personObj = new Person
{
Address = addressObj;
... Filling some values...
};
mapper.Map(personViewModelObj, personObj); // How to make this work for both Person and Address properties?
两次吗?
答案 0 :(得分:1)
使用@Jasen评论我得到了它的工作。主要问题是我正在反向绘制。官方文档中的这句话解决了这个问题:
仅为
OnClose
配置取消张开。如果您想要不讨人喜欢,则必须配置ReverseMap
- >Entity
然后调用Dto
从ReverseMap
- >创建一个不平整类型的地图配置。Dto
。
这是链接:
https://github.com/AutoMapper/AutoMapper/blob/master/docs/Reverse-Mapping-and-Unflattening.md
换句话说,为了让不讨人喜欢的工作,我有(或必须)朝这个方向进行映射:
Entity