【问题标题】:Automapper nested relationship "back" mappingAutomapper 嵌套关系“回”映射
【发布时间】:2020-02-12 01:29:30
【问题描述】:

假设我有一个嵌套的 DTO,就像这样(实际上它要复杂得多):

public class OrderDTO
{
    public int Id { get; set; }
    public List<ItemDTO> Item { get; set; }
}

public class ItemDTO
{
    public int Id { get; set; }
}

映射到:

public class Order
{
    public int Id { get; set; }
    public List<Item> Item { get; set; }
}

public class Item
{
    public int Id { get; set; }
    public Order Order { get; set; }
}

当从 OrderDTO 映射到 Order 时,我希望 Item 中的 Order 属性引用它的顺序,以使 var order = item.Order; 之类的东西成为可能。

映射时有什么方法可以做到这一点吗?另外,是否可以为我的所有嵌套映射配置它?

【问题讨论】:

  • 使用BeforeMap,您可以将父对象保存在context.Items 中,然后在解析器中使用该值作为父引用。如果您尊重命名约定,您可以使用ForAllMaps 将其应用到您需要的任何地方。
  • 感谢您的快速回复,效果很好!愿意张贴作为答案吗?只是另一件事,我是否必须始终在调用 Map 时传递 `Action`(或进行扩展)?
  • 可以,你可以做一个扩展方法,MapWithContext

标签: c# .net automapper


【解决方案1】:

使用BeforeMap,您可以将父对象保存在context.Items 中,然后在解析器中使用该值作为父引用。如果您尊重命名约定,您可以使用ForAllMaps 将其应用到您需要的任何地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-17
    • 2017-07-20
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多