Recursion 自动映射父子映射将孙子属性设置为null

Recursion 自动映射父子映射将孙子属性设置为null,recursion,orm,automapper,poco,dto,Recursion,Orm,Automapper,Poco,Dto,在对象之间映射时,Automapper似乎忽略了孙子对象。所以我只得到了两级递归。我需要至少3个,最好是n个级别 如何让Automapper返回正确的对象,且所有子对象保持完整? 我可以通过序列化DbPOCO并反序列化到Dto来解决这个问题,但这意味着在我的应用程序中交叉关注点,和/或为这个我不喜欢的特定方法做一些不同的事情 考虑到我的DB Poco public class Menu : SqlTable, IParentChild<Menu> { p

在对象之间映射时,Automapper似乎忽略了孙子对象。所以我只得到了两级递归。我需要至少3个,最好是n个级别

如何让Automapper返回正确的对象,且所有子对象保持完整?

我可以通过序列化DbPOCO并反序列化到Dto来解决这个问题,但这意味着在我的应用程序中交叉关注点,和/或为这个我不喜欢的特定方法做一些不同的事情

考虑到我的DB Poco

    public class Menu : SqlTable, IParentChild<Menu>
    {
       public string Label {get; set;}
       public string Route {get; set;}
       public float Sequence { get; set; }
       public int? ParentID {get; set;}
       public Menu Parent {get; set;}
       public IList<Menu> Children { get; set; }
    }
当我将其传递到Automapper时,将其映射到以下DTO

public class WebApplicationMenuModel
    {
        public string Label { get; set; }
        public string Route { get; set; }
        public float Sequence { get; set; }
        public IEnumerable<WebApplicationMenuModel> Children { get; set; }

    }
地图配置文件相当基本

    public class MenuProfile : Profile
    {
        public MenuProfile()
        {
            CreateMap<Menu, WebApplicationMenuModel>()
                .ReverseMap();
        }
    }

public类文件:配置文件
{
公共文件()
{
CreateMap()
.ReverseMap();
}
}

见卢西恩·巴加奥努的回复。需要使用主Automapper分支(9.1.0-ci-01627)从MyGet支持此功能


这在EF6中是不可能的。我应该澄清一下,我使用的是EFCore 3。然而,当这个对象点击Automapper时,它已经被底层服务处理过了,所以我没有从EF传递枚举,我正在使用递归扩展方法构建一个全新的列表。这已经修复了它!基督6天前犯下的。太好了。甚至没有想过要查看他们的Git开发列表。吸取的教训。
[
  {
    "Label": "Main Menu 1",
    "Route": "",
    "Sequence": 1,
    "Children": [
      {
        "Label": "Menu 1 Sub 1",
        "Route": "",
        "Sequence": 1,
        "Children": null
      },
      {
        "Label": "Menu 1 Sub 2",
        "Route": "",
        "Sequence": 2,
        "Children": null
      }
    ]
  },
  {
    "Label": "Main Menu 2",
    "Route": "",
    "Sequence": 2,
    "Children": [
      {
        "Label": "Menu 2 Sub 1",
        "Route": "",
        "Sequence": 1,
        "Children": null
      }
    ]
  }
]
    public class MenuProfile : Profile
    {
        public MenuProfile()
        {
            CreateMap<Menu, WebApplicationMenuModel>()
                .ReverseMap();
        }
    }