Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Configuration 自动映射-添加配置文件后映射失败_Configuration_Automapper_Profile_Convention - Fatal编程技术网

Configuration 自动映射-添加配置文件后映射失败

Configuration 自动映射-添加配置文件后映射失败,configuration,automapper,profile,convention,Configuration,Automapper,Profile,Convention,我正在使用约定映射,在将配置文件添加到配置时遇到问题。考虑下面的配置。我正在使用AutoFac解析CoreMapper中的配置文件,并且配置文件已正确注入 映射配置 在我的代码中,我有一个通用类实现,行如下: mapper.Map<TPoco>(entity); 实体是数据库实体模型 映射工作正常。mapper.Map(实体)的结果是正确的 然后,我继续添加一个特定映射的配置文件,该映射与之前映射的ModelPoco完全不相关 正在添加的配置文件: public class Re

我正在使用约定映射,在将配置文件添加到配置时遇到问题。考虑下面的配置。我正在使用AutoFac解析CoreMapper中的配置文件,并且配置文件已正确注入

映射配置 在我的代码中,我有一个通用类实现,行如下:

mapper.Map<TPoco>(entity);
实体是数据库实体模型

映射工作正常。mapper.Map(实体)的结果是正确的

然后,我继续添加一个特定映射的配置文件,该映射与之前映射的ModelPoco完全不相关

正在添加的配置文件:

public class  RepositoryLayerProfile : AutoMapper.Profile {
    public RepositoryLayerProfile() {
        CreateMap<SomeOtherEntity, ISomeOtherModelInterface>();
    }
}
公共类RepositoryLayerProfile:AutoMapper.Profile{ 公共存储层配置文件(){ CreateMap(); } } 版本:6.2.2 预期行为 ModelEntity到ModelPoco的映射应该正常进行

实际行为 映射将随着以下消息而中断: 无法将“Proxy类型的对象强制转换为“ModelPoco”类型。在线映射器.Map(实体)

我不知道为什么它要为IModel接口创建代理类,然后尝试转换为具体的实现? 我显式地设置要将实体映射到具体实现

如果我从配置文件中删除CreateMap,它可以正常工作,但第一次在所述配置文件中定义CreateMap时,它会中断。
在我看来,它似乎出于某种原因忘记了配置,即使它与配置无关。

检查。@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>();
    }
}