我在转换TypeName的属性时遇到问题,该属性在源中以Tbl开头,在目标中以FK开头,但发生了此错误:缺少类型映射配置或不支持的映射。Tbl_Child->Int32 Tbl_Cild->System.Int32目标路径:Destination.FK_Child.FK_Child源值:Tbl_Cchild
代码为:
public class Source
{
public Tbl_Child Child { get; set; }
public string SourceName { get; set; }
}
public class Tbl_Child
{
public int ID_Child { get; set; }
public string ChildName { get; set; }
}
public class Destination
{
public int FK_Child { get; set; }
public string ChildName { get; set; }
public string SourceName { get; set; }
}
static void Main(string[] args)
{
var src = new Source()
{
Child = new Tbl_Child()
{
ChildName = "ch",
ID_Child = 1
},
SourceName = "src"
};
AutoMapper.Mapper.CreateMap<Source, Destination>();
var dest = AutoMapper.Mapper.Map<Source, Destination>(src);
Console.ReadKey();
}
我测试AutoMapper 2.0.0.0版和3.1.1.0版
开箱即用,Automapper能够映射具有相同名称的属性并在属性中展开。对于其他特性,必须指定所需的映射。
例如,从Source.Child.ID_Child
到Destination.FK_Child
的映射可以这样完成:
Mapper.CreateMap<Source, Destination>()
.ForMember(d => d.FK_Child, o => o.MapFrom(s => s.Child.ID_Child));
你可以像一样链接所有自定义映射
Mapper.CreateMap<Source, Destination>()
.ForMember(d => d.FK_Child, o => o.MapFrom(s => s.Child.ID_Child))
.ForMember(d => d.ChildName, o => o.MapFrom(s => s.Child.ChildName));
在这种情况下,这种映射应该足够了,但我认为在进行