【发布时间】:2018-04-24 23:02:02
【问题描述】:
我有这个简单的数据模型:
// 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; }
}
我想将PersonViewModel 的值映射(使用AutoMapper)到相应的属性(AutoMapper 会发现属性应该在根对象中还是在子对象中)。 请记住,AutoMapper 不应创建 Person 对象或 Address(必须手动创建对象以在自动映射之前填充其他属性),并且 AutoMapper 使用已存在的对象。例如:
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?
如何让自动映射同时适用于人员属性和地址属性?
是否应该添加两条映射规则(地址和人),并执行两次mapper.Map()?
【问题讨论】:
-
有一个类似的问题here。
-
@Jasen,谢谢,我正在看。你能帮我理解这部分吗,我不明白它的目的是什么:github.com/AutoMapper/AutoMapper/blame/master/docs/…
-
如果您的正向映射未映射到与反向映射相同的属性。正如文档所述 “在大多数情况下,您不需要这个,因为原始 MapFrom 将为您反转。当获取和设置值的路径不同时使用 ForPath。”
标签: c# .net .net-core automapper