[英]Using Automapper profiles
概要
我正在创建POC,以将旧的Web表单应用迁移到MVC。 作为其一部分,我希望它使用新的(到此位置)工具,例如Automapper,jQuery,实体框架等。
我被困在如何正确设置和使用Automapper配置文件上。 我认为看到较旧版本的Automapper提供的帮助可能会使我感到困惑。
我想我正在忽略一些非常简单的事情。
细节
我有一个工厂方法可以从数据库中获取一些东西,并使用自动映射器将它们从EF表示形式转换为与db无关的表示形式。 首先,我只是将映射插入了我的查询方法中:
var typeConfig = new MapperConfiguration(cfg => cfg.CreateMap<Db.ClaimType, ApplicationObjects.Claims.ClaimType>()
.ForMember(dest => dest.Id, opts => opts.MapFrom(src => src.ID)));
var aoTypes = typeConfig.CreateMapper().Map<List<Db.ClaimType>, List<ApplicationObjects.Claims.ClaimType>>(claimTypes);
return aoTypes;
很好
现在,我希望我们能够在应用程序中声明一次每个映射,因此任何更新都将应用于所有用途。 我阅读了有关Automapper配置文件的信息,并创建了一个简单的配置文件:
public class ClaimProfile : Profile
{
public ClaimProfile()
{
var claimTypeMappingDbToAO = CreateMap<Db.ClaimType, ApplicationObjects.Claims.ClaimType>()
.ForMember(dest => dest.Id, opts => opts.MapFrom(src => src.ID));
var claimMappingDbToAO = CreateMap<Db.Claim, ApplicationObjects.Claims.Claim>()
.ForMember(dest => dest.Id, opts => opts.MapFrom(src => src.ClaimID))
.ForMember(dest => dest.ClaimTypeId, opts => opts.MapFrom(src => src.ClaimType))
.ForMember(dest => dest.ClaimType, opts => opts.MapFrom(src => src.ClaimType1));
}
}
和一个配置类,该类在Global.asax的Application_Start中执行
public class AutoMapperConfig
{
public static void Initialize()
{
MapperConfiguration config = new MapperConfiguration(cfg =>
{
cfg.AddProfile(new ClaimProfile());
});
}
}
我不清楚如何更改工厂以使用映射的概要文件版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.