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