自动映射器无法正常工作



我使用的是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

我做错了什么?

好。我明白了:代替:

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

我应该写:

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

将配置对象本身传递到ProjectTo中。

您需要使用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);

相关内容

  • 没有找到相关文章

最新更新