How to merge two different objects with nested collection by Automapper 10+?

Viewed 81

Please consider the following source code

// Data Model
public class CustomerDataModel
{
    public string Name { get; set; }
    public string Family { get; set; }
    public IEnumerable<CustomerDetailDataModel> CustomerDetail { get; set; }
    public CustomerDataModel()
    {
        CustomerDetail = new List<CustomerDetailDataModel>();
    }
}
public class CustomerDetailDataModel
{
    public int Id { get; set; }
    public string Info { get; set; }
}

// Request Model
public class CustomerRequestModel
{
    public string Name { get; set; }
    public IEnumerable<CustomerDetailRequestModel> CustomerDetail { get; set; }
    public CustomerRequestModel()
    {
        CustomerDetail = new List<CustomerDetailRequestModel>();
    }
}
public class CustomerDetailRequestModel
{
    public int Id { get; set; }
}

Now consider these values

// Data Model
var customerDetailDataModel = new List<CustomerDetailDataModel>();
customerDetailDataModel.Add(new CustomerDetailDataModel() { Id = 1, Info = "nothing" });
var customerDataModel = new CustomerDataModel()
{
    Name = "Jack",
    Family = "Robbin",
    CustomerDetail = customerDetailDataModel
};

// Request Model
var customerDetailRequestModel = new List<CustomerDetailRequestModel>();
customerDetailRequestModel.Add(new CustomerDetailRequestModel() { Id = 2 });
var customerRequestModel = new CustomerRequestModel()
{
    Name = "Maya",
    CustomerDetail = customerDetailRequestModel
};

How can I merge data from CustomerDataModel to CustomerRequestModel with Automapper 10+ and also in reverse?

If data exists in the destination keep it if not merge it (replace it with the source).

0 Answers
Related