Configuration 自动映射-添加配置文件后映射失败
我正在使用约定映射,在将配置文件添加到配置时遇到问题。考虑下面的配置。我正在使用AutoFac解析CoreMapper中的配置文件,并且配置文件已正确注入 映射配置 在我的代码中,我有一个通用类实现,行如下:Configuration 自动映射-添加配置文件后映射失败,configuration,automapper,profile,convention,Configuration,Automapper,Profile,Convention,我正在使用约定映射,在将配置文件添加到配置时遇到问题。考虑下面的配置。我正在使用AutoFac解析CoreMapper中的配置文件,并且配置文件已正确注入 映射配置 在我的代码中,我有一个通用类实现,行如下: mapper.Map<TPoco>(entity); 实体是数据库实体模型 映射工作正常。mapper.Map(实体)的结果是正确的 然后,我继续添加一个特定映射的配置文件,该映射与之前映射的ModelPoco完全不相关 正在添加的配置文件: public class Re
mapper.Map<TPoco>(entity);
实体是数据库实体模型
映射工作正常。mapper.Mappublic class RepositoryLayerProfile : AutoMapper.Profile {
public RepositoryLayerProfile() {
CreateMap<SomeOtherEntity, ISomeOtherModelInterface>();
}
}
公共类RepositoryLayerProfile:AutoMapper.Profile{
公共存储层配置文件(){
CreateMap();
}
}
版本:6.2.2
预期行为
ModelEntity到ModelPoco的映射应该正常进行
实际行为
映射将随着以下消息而中断:
无法将“Proxy在我看来,它似乎出于某种原因忘记了配置,即使它与配置无关。检查。@LucianBargaoanu我检查过,它将目标类型设置为IModel,而不是像我在mapper.Map方法中指定的那样设置为ModelPoco。我很难理解它为什么会这样做。匹配的类型映射指定了目标类型,而不是映射调用。映射调用中的目标用于查找匹配的类型映射。执行计划不提供有关从何处获取类型映射的任何信息。它告诉我它将ModelEntity转换为IModel,并尝试将其转换为ModelPoco。我没有任何明确的映射和规则,我依靠引擎来确定它将如何映射到目标类型。:)这正是问题所在。您正在将动态贴图与复杂贴图混合。这永远不会真正起作用。我的建议是,要么将CreateMissingTypeMaps全局设置为false,要么使用CreateMissingTypeMaps false创建一个单独的配置文件,在其中执行更复杂的映射。
mapper.Map<TPoco>(entity);
public class ModelPoco : IModel {
// props
}
public class RepositoryLayerProfile : AutoMapper.Profile {
public RepositoryLayerProfile() {
CreateMap<SomeOtherEntity, ISomeOtherModelInterface>();
}
}