C# 从4.2.X迁移到最新版本AutoMapper的低影响迁移路径

C# 从4.2.X迁移到最新版本AutoMapper的低影响迁移路径,c#,automapper,C#,Automapper,我将尝试迁移到最新稳定版本的auto mapper。当前使用的版本是4.2.1.0 使用70多个实体贴图的实例超过500个,其形式为: Mapper.CreateMap<Data.Entities.Entity, Domain.Models.Entity>(); ... Mapper.Map<Data.Entities.Entity, Domain.Models.Entity>(x)).ToList(); 我正在寻找从4.2.x成功迁移的人提供的迁移建议。希望我能找到一

我将尝试迁移到最新稳定版本的auto mapper。当前使用的版本是4.2.1.0

使用70多个实体贴图的实例超过500个,其形式为:

Mapper.CreateMap<Data.Entities.Entity, Domain.Models.Entity>();
...
Mapper.Map<Data.Entities.Entity, Domain.Models.Entity>(x)).ToList();

我正在寻找从4.2.x成功迁移的人提供的迁移建议。希望我能找到一条重构最少的迁移路径。

您需要将所有这些都移动到一个映射器中。初始化调用,尽管通常我们会在一个配置文件中组织每个映射器。如果您熟悉正则表达式,那么应该能够使用它将所有这些事件输出到单个文件中。类似于/Mapper\.CreateMap.*;/您可能需要调整以获得跨行的语句

收集完所有CreateMap调用后,只需将其包装为:

Mapper.Initialize(cfg => {
    cfg.CreateMap(...);
});
您将用cfg.CreateMap替换Mapper.CreateMap,因此这是一个简单的文本替换

然后,您可以再次使用正则表达式,而不仅仅是匹配Mapper.CreateMap的原始匹配项并将其删除


这也是我在迁移ORMs和正则表达式时使用的技术,可以让我在90-100%的时间内完成迁移。

谢谢你的回答!你能根据配置文件划分应用程序代码吗?假设有10-20个很少使用的实体和另一组一直使用的实体。有没有办法只在第一次点击时配置很少使用的组?或者,一次配置所有的前期工作是否没有什么大的顾虑/损失?没有什么大的顾虑,但是对于非常大的应用程序,您可以关闭前期编译,请参阅文档。我并不是为了性能而对配置文件进行分区,只是为了组织/理智