概要
我正在创建一个 POC 以将旧的 Web 表单应用程序迁移到 MVC。作为其中的一部分,我希望它使用新的(到这个地方)工具,例如 Automapper、jQuery、Entity Framework 等。
我一直不知道如何正确设置和使用 Automapper 配置文件。我想我可能会因为看到旧 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());
});
}
}
我不清楚我应该如何更改我的工厂以使用映射的配置文件版本。