【问题标题】:Automapper 5.0.2 - Missing type map configuration or unsupported mappingAutomapper 5.0.2 - 缺少类型映射配置或不支持的映射
【发布时间】:2016-07-26 19:35:40
【问题描述】:

我已经阅读了有关此问题的所有在线信息,但没有任何帮助。这是我的代码:

 Mapper.Initialize(cfg =>
        {
            cfg.CreateMap<User, UserListViewModel>()
            .ForMember("RoleNames", c => c.Ignore())
            .ForMember("CostCentreNames", c => c.Ignore())
            .ForMember("RollupGroupNames", c => c.Ignore())
            .ForMember(c => c.CostCentres, m => m.MapFrom(d => d.DetailCostCentres))
            ;
        });

        Mapper.Initialize(cfg =>
        {
            cfg.CreateMap<CostCentre, CostCentreListViewModel>();

        });

var users = _repo.AllIncluding(u => u.Roles, u=>u.CostCentres).OrderBy(u => u.UserName).ToList();
var  model = Mapper.Map<List<User>, List<UserListViewModel>>(users);

Mapper.Map 给了我错误:

缺少类型映射配置或不支持的映射。

映射类型:
用户 -> UserListViewModel
Model.Models.User -> Model.ViewModels.UserListViewModel
说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:AutoMapper.AutoMapperMappingException:缺少类型映射配置或不支持的映射。

映射类型:
用户 -> UserListViewModel
Model.Models.User -> Model.ViewModels.UserListViewModel

来源错误:

第 45 行:
第 46 行:var users = _repo.AllIncluding(u => u.Roles, u=>u.CostCentres).OrderBy(u => u.UserName).ToList();
第 47 行:var model = Mapper.Map, List>(users);
第 48 行:返回模型;
第 49 行:}

【问题讨论】:

    标签: automapper


    【解决方案1】:

    您只能拨打一个Mapper.Initialize 电话:

     Mapper.Initialize(cfg =>
            {
                cfg.CreateMap<User, UserListViewModel>()
                .ForMember("RoleNames", c => c.Ignore())
                .ForMember("CostCentreNames", c => c.Ignore())
                .ForMember("RollupGroupNames", c => c.Ignore())
                .ForMember(c => c.CostCentres, m => m.MapFrom(d => d.DetailCostCentres));
                cfg.CreateMap<CostCentre, CostCentreListViewModel>();
            });
    

    【讨论】:

    • 感谢您的回复。我实际上想出了一个,但是它并没有解决我的问题。我将 Automapper v 2 升级到 v5,它需要一些代码修改才能工作。就我而言,它无法自动处理对象内部的集合。我必须添加一行代码来指定:
    • 谢谢!这让我整个早上都发疯了......我们有多个 Mapper.Initialize 实例,一旦我们将它们组合成一个,使用配置文件,一切正常。
    【解决方案2】:

    感谢您的回复。我实际上想出了一个,但是它并没有解决我的问题。我将 Automapper v 2 升级到 v5,它需要一些代码修改才能工作。就我而言,它无法自动处理对象内的集合。我不得不添加一行代码来指定:

    Mapper.Initialize(cfg =>
            {
                cfg.CreateMap<User, UserListViewModel>()
                .ForMember("RoleNames", c => c.Ignore())
                .ForMember("CostCentreNames", c => c.Ignore())
                .ForMember("RollupGroupNames", c => c.Ignore())
                .ForMember(c => c.CostCentres, m => m.MapFrom(d => d.DetailCostCentres));
                cfg.CreateMap(typeof(Role), typeof(RoleViewModel));
                cfg.CreateMap(typeof(CostCentre), typeof(CostCentreListViewModel));
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-01
      • 2017-04-16
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 2015-05-07
      相关资源
      最近更新 更多