TypeName为的AutoMapper属性在Source中以Tbl开头,而属性在destination中以FK开头



我在转换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_ChildDestination.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));

在这种情况下,这种映射应该足够了,但我认为在进行

之前,您可能需要阅读一下wiki

最新更新