【问题标题】:How To Projection To List using AutoMapper如何使用 AutoMapper 投影到列表
【发布时间】:2017-02-22 22:26:30
【问题描述】:

我必须喜欢这样:

public class OrderDTO
{
    public Guid OrderID { get; set; }
    public DateTime OrderDate { get; set; }
    public List<OrderItemDTO> OrderItems
}

public class OrderItemDTO
{
    public string ItemName { get; set; }
    public int Quantity { get; set; }
    public decimal Price { get; set; }
}

当我使用 AutoMapper 将 Order 实体投影到 OrderDTO

return context.Orders
    .Include(o => o.OrderItems.Select(oi => oi.Item))
    .Where(o => o.OrderID == orderID)
    .Project().To<OrderDTO>()
    .SingleOrDefault();

我收到了错误:

LINQ to Entities 无法识别该方法 'System.Collections.Generic.List1[DTO.OrderItemDTO] ToList[OrderItemDTO](System.Collections.Generic.IEnumerable1[DTO.OrderItemDTO])' 方法,并且该方法不能翻译成商店表达式。

这是我的映射器:

Mapper.CreateMap<Order, OrderDTO>();
Mapper.CreateMap<OrderItem, OrderItemDTO>();

如果我将List&lt;OrderItemDTO&gt; 更改为IEnumerable&lt;OrderItemDTO&gt;,它可以工作,但我需要在List&lt;OrderItemDTO&gt; 中操作列表的内容。

有什么办法可以解决这个问题吗?

【问题讨论】:

  • 您使用的是哪个版本的自动映射器?
  • @YashveerSingh 我正在使用 Automapper 3.3.1

标签: c# entity-framework linq repository automapper


【解决方案1】:

您曾声明您正在使用 AutoMapper 3.3.1 - 该版本是在 2 年前发布的,从那时起已经有很多改进(尤其是在 LINQ 预测方面)。

我建议更新您的 AutoMapper 并查看问题是否消失。

【讨论】:

  • 谢谢,我已经更新了自动映射器和相关库。它有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 2019-12-19
  • 1970-01-01
相关资源
最近更新 更多