这是我目前的类域模型:
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派生的所有实体手动映射这些列?
谢谢!
答案 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时,我不必大惊小怪。