使用AutoMapper合并两个对象

时间:2015-08-06 07:00:27

标签: c# automapper

我想使用AutoMapper合并两个对象(参见下面的测试)。我尝试了很多东西,但它总是复制目标或源的两个属性。

我如何通过以下测试?

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

[Test]
public void Merge_people()
{
    var source = new Person() { LastName = "Smith" };
    var target = new Person() { FirstName = "John" };

    Mapper.CreateMap<Person, Person>();
    Mapper.Map(source, target);

    Assert.That(target.FirstName == "John");
    Assert.That(target.LastName == "Smith");
}

2 个答案:

答案 0 :(得分:2)

使用正确定义的条件,您可以管理所需内容:

 Mapper.CreateMap<Person, Person>()
       .ForAllMembers(o => o.Condition((source, destination, member) => member != null));

它将仅映射不同于null的成员。 我正在使用AutoMapper 6.1.1,但我相信它也适用于旧版本。

答案 1 :(得分:1)

我相信Automapper还没有这种功能。请参见链接here