如何将对象映射到具有子对象中某些属性的另一个对象

时间:2016-08-11 09:36:58

标签: automapper

任何人都可以告诉我哪里犯了错误吗?

public class DataModelProduct 
{
public int Id {get;set;}
public string Name {get;set;}
public string Price {get;set;};
public string Brand {get;set;}
public string Color {get;set;}
public string Dimentions {get;set;}
public string Type {get;set;}
public string Network {get;set;}
}

public class Product
{
public int Id {get;set;}
public string Name {get;set;}
public string Price {get;set;}
public Specification Spec {get;set;}
}

public class Specification
{
public string Brand {get;set;}
public string Color {get;set;}
public string Dimentions {get;set;}
public string Type {get;set;}
public string Network {get;set;}
}


AutoMapper.Mapper.CreateMap< DataModelProduct, Product>();
AutoMapper.Mapper.CreateMap< DataModelProduct, Specification>();

您可以假设Product类是核心模型,DataModelProduct是数据库模型

映射Product属性,但Specification属性为空。

1 个答案:

答案 0 :(得分:0)

您需要为AutoMapper提供所有属性访问器才能运行:

e.g。

public string Brand { get; set; }
public Specification Spec { get; set; }

你的映射初始化代码应该是

var config = new MapperConfiguration(cfg => {
    cfg.CreateMap< DataModelProduct, Product>();
    cfg.CreateMap< DataModelProduct, Specification>();
});

您的运行时代码如下:

var product = Mapper.Map(dataModelProduct, new Product());

映射到Specification

var product = Mapper.Map(dataModelProduct, new Product());
product.Specification = new Specification();
Mapper.Map(dataModelProduct, product.Specification);