使用AutoMapper将跟踪列重新映射到基类名称

时间:2011-03-07 14:31:12

标签: c# automapper

这是我目前的类域模型:

public class Customer : TrackedEntity
{
    ... // Working Properties Omitted
}

public abstract class TrackedEntity
{
     public DateTime CreatedAt { get; set; } // Maps to field 'CreateDate'
     public DateTime ModifiedAt { get; set; } // Maps to field 'ModDate'
     public string  CreatedBy { get; set; } 
     public string ModifiedBy { get; set; } // Maps to field 'ModBy'
}

我映射的每个数据库表(来自EFv4)包含的跟踪字段具有相同类型但与TrackedEntity中的名称不同的名称。有没有办法建立映射约定,因此您不需要为从TrackedEntity派生的所有实体手动映射这些列?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在地图创建中手动设置映射以处理不匹配的名称:

Mapper.CreateMap<TypeA, TypeB>()
    .ForMember(dest => dest.Prop1, opt => opt.MapFrom(src => src.PropA))
    .ForMember(dest => dest.Prop2, opt => opt.MapFrom(src => src.PropB));

请记住,您只需要运行一次地图创作,并且它们在您的应用期间都有效。我把它放在了Global.asax的App Start中,所以我知道它们都在一个地方,当我实际使用AutoMapper时,我不必大惊小怪。