0

概要

我正在创建一个 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());
            });

        }
    }

我不清楚我应该如何更改我的工厂以使用映射的配置文件版本。

4

0 回答 0