【问题标题】:AutoMapper in C# Navigation PropertiesC# 导航属性中的 AutoMapper
【发布时间】:2023-01-26 19:45:23
【问题描述】:

我有课

public class Order
{
    public string Name{ get; set; }
    public Nullable<int> StatusId { get; set; }
    public virtual Status Status { get; set; }
}

public class Status
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class OrderDto
{
    public Nullable<int> StatusId { get; set; }
    public string Name{ get; set; }
}

public class StatusDto
{
    public int Id { get; set; }
    public string Name { get; set; }
}

自动映射器:

cfg.CreateMap<Order, OrderDto>().ReverseMap(); 
cfg.CreateMap<Status, StatusDto>().ReverseMap(); 

在模型类中,我能够做到这一点:

name = order.status.Name

使用 autoMapper 时我该如何实现

【问题讨论】:

  • 恐怕我完全无法理解这个问题。请查看How to Ask 并改进问题。你究竟想做什么,当你尝试这样做时,什么代码会失败?

标签: c# automapper


【解决方案1】:

您的OrderDto 没有Status,因此您无法从映射对象中获取Status 名称。

因此,您要么在OrderDtoStatusName中创建新属性,并将其映射到模型的status.name,要么添加到OrderDto对象StatusDto字段,如下所示:

public class OrderDto
{
    public string Name{ get; set; }
    public Nullable<int> StatusId { get; set; }
    public StatusDto Status { get; set; }
}

然后 AutoMapper 会将模型的 Status 字段映射到 OrderDtoStatus 字段。

【讨论】:

    【解决方案2】:

    你可以这样做,但你需要在映射器配置文件中定义它。

    CreateMap<Order, OrderDTO>()
        .ForMember(dst => dst.name, src => src.MapFrom(x => x.status.Name));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多