AutoMap属性为子属性的属性

时间:2018-04-24 23:02:02

标签: c# .net .net-core automapper

我有这个简单的数据模型:

// 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? 两次吗?

1 个答案:

答案 0 :(得分:1)

使用@Jasen评论我得到了它的工作。主要问题是我正在反向绘制。官方文档中的这句话解决了这个问题:

  

仅为OnClose配置取消张开。如果您想要不讨人喜欢,则必须配置ReverseMap - > Entity然后调用DtoReverseMap - >创建一个不平整类型的地图配置。 Dto

这是链接:

https://github.com/AutoMapper/AutoMapper/blob/master/docs/Reverse-Mapping-and-Unflattening.md

换句话说,为了让不讨人喜欢的工作,我有(或必须)朝这个方向进行映射:

Entity