我有自动转换属性的问题,其中TypeName以源代码中的Tbl开头,属性以目标中的FK开头,但发生此错误: 缺少类型映射配置或不支持的映射。 Tbl_Child - > Int32 Tbl_Child - > System.Int32目标路径:Destination.FK_Child.FK_Child源值:Tbl_Child
代码是:
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
答案 0 :(得分:0)
开箱即用,Automapper能够映射属性中具有相同名称和flattening的属性。对于其他属性,您必须指定所需的映射。
例如,从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));
在这种情况下,此映射应该足够了,但我认为在继续之前您可能需要read the wiki