Automapper并没有按预期工作

时间:2016-04-06 12:15:46

标签: c# automapper automapper-4

我正在使用AutoMapper 4.2.1.0,我已将我的地图定义如下。

 var config = new MapperConfiguration(cfg =>
        {
            cfg.CreateMap<Order, OrderDTO>();
            cfg.CreateMap<Order_Detail, Order_DetailDTO>();
        });
MapperConfig = config;

然后我在代码中使用MapperConfig来执行此操作:

var builder = MapperConfig.ExpressionBuilder;
return ((IQueryable<TEntity>) property.GetValue(_db, null)).ProjectTo<TDto>(builder);

但当TEntityOrderTDtoOrderDto时,我会收到一个例外消息:

  

从Order到OrderDTO缺少地图。创建使用   Mapper.CreateMap

我做错了什么?

2 个答案:

答案 0 :(得分:1)

行。我有它: 而不是:

return ((IQueryable<TEntity>) property.GetValue(_db, null)).ProjectTo<TDto>(builder);

我应该写:

return ((IQueryable<TEntity>) property.GetValue(_db, null)).ProjectTo<TDto>(MapperConfig);

将配置对象本身传递给ProjectTo。

答案 1 :(得分:0)

您需要使用MapperConfiguration对象创建映射器。

var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<Order, OrderDTO>();
    cfg.CreateMap<Order_Detail, Order_DetailDTO>();
});

// Make sure mappings are properly configured (you can try-catch this).
config.AssertConfigurationIsValid();

// Create a mapper to use for auto mapping.
var mapper = config.CreateMapper();

var orderObject = new Order { /* stuff */ };
var orderDto = mapper.Map<OrderDTO>(orderObject);