将 LLBLGen 实体映射到 DTO
Map LLBLGen entity to DTO
我正在尝试使用 AutoMapper 在 LLBLGen 实体和 DTO 之间创建映射。
我的DTO的样子如下:
// Parent
public int Id { get; set; }
public List<Child> Children{ get; set; } // One to Many
// Child
public int Id { get; set; }
public int Parent { get; set; } // Foreign key to parent Id
ParentEntity 包含一个与 DTO List 同名的 ChildCollection 和一个 Id(以及需要忽略的其他 LLBL 字段)。因此,当 ParentEntity 映射到 Parent DTO 时,它还应该将 ChildCollection 映射到 Children 列表。
这是我目前得到的:
ParentEntity parentEntity = new ParentEntity(id);
AutoMapper.Mapper.CreateMap<ParentEntity, Parent>();
AutoMapper.Mapper.CreateMap<ChildCollection, List<Child>>();
var parent = AutoMapper.Mapper.Map<Parent>(parentEntity);
这导致 Id 被映射,但 List 的计数为 0。
我怎样才能让它发挥作用?
更新:
尝试与我之前的尝试相同,但手动映射子列表也会导致同样的问题:Id 已映射但列表为空。
Mapper.CreateMap<ParentEntity, Parent>()
.ForMember(dto => dto.Children, opt => opt.MapFrom(m => m.Children));
这行没有帮助:
AutoMapper.Mapper.CreateMap<ChildCollection, List<Child>>();
而不是这个,你应该添加显式映射 class-to-class:
AutoMapper.Mapper.CreateMap<ChildEntity, Child>();
然后您应该指定要映射的确切属性。这两个属性都应具有列表类型或类似类型(List<ChildEntity>
作为源,List<Child>
作为目标)。所以,如果 ParentEntity
和 Parent
类 都有 Children
属性,你甚至不必指定:
.ForMember(dto => dto.Children, opt => opt.MapFrom(m => m.Children));
默认映射就够了:
Mapper.CreateMap<ParentEntity, Parent>();
我正在尝试使用 AutoMapper 在 LLBLGen 实体和 DTO 之间创建映射。
我的DTO的样子如下:
// Parent
public int Id { get; set; }
public List<Child> Children{ get; set; } // One to Many
// Child
public int Id { get; set; }
public int Parent { get; set; } // Foreign key to parent Id
ParentEntity 包含一个与 DTO List 同名的 ChildCollection 和一个 Id(以及需要忽略的其他 LLBL 字段)。因此,当 ParentEntity 映射到 Parent DTO 时,它还应该将 ChildCollection 映射到 Children 列表。
这是我目前得到的:
ParentEntity parentEntity = new ParentEntity(id);
AutoMapper.Mapper.CreateMap<ParentEntity, Parent>();
AutoMapper.Mapper.CreateMap<ChildCollection, List<Child>>();
var parent = AutoMapper.Mapper.Map<Parent>(parentEntity);
这导致 Id 被映射,但 List 的计数为 0。
我怎样才能让它发挥作用?
更新:
尝试与我之前的尝试相同,但手动映射子列表也会导致同样的问题:Id 已映射但列表为空。
Mapper.CreateMap<ParentEntity, Parent>()
.ForMember(dto => dto.Children, opt => opt.MapFrom(m => m.Children));
这行没有帮助:
AutoMapper.Mapper.CreateMap<ChildCollection, List<Child>>();
而不是这个,你应该添加显式映射 class-to-class:
AutoMapper.Mapper.CreateMap<ChildEntity, Child>();
然后您应该指定要映射的确切属性。这两个属性都应具有列表类型或类似类型(List<ChildEntity>
作为源,List<Child>
作为目标)。所以,如果 ParentEntity
和 Parent
类 都有 Children
属性,你甚至不必指定:
.ForMember(dto => dto.Children, opt => opt.MapFrom(m => m.Children));
默认映射就够了:
Mapper.CreateMap<ParentEntity, Parent>();