[英]BestPractice: How to display a many-to-many association in a view in a clean way?
[英]Automapper - Bestpractice of mapping a many-to-many association into a flat object
我有两个实体: Employee
和Team
。
我想要的是一个拥有Team
Name
的EmployeeForm
。
如何使用AutoMapper实现此目的?
我目前的“解决方案”如下:
Mapper.CreateMap<Employee, EmployeeForm>()
.ForMember(dest => dest.TeamName, opt => opt.MapFrom(x => x.GetTeams().FirstOrDefault() != null ? string.Join(", ", x.GetTeams().Select(y=>y.Name)) : "n/a"));
在我看来,这是可读的。
我想要的是一个通用方法,我可以传递一个实体,选择集合并说集合是否为null返回默认值,或者通过lambda表达式选择集合的属性。
我重新考虑我的整个设计开始更改域模型 :
我改变了many-to-many association
成两个one-to-many associations
使用关系表。
使用这个更简单的域模型 ,我可以使用AutoMapper轻松将其映射到平面DTO 。
public class TeamEmployeeMapperProfile : Profile
{
protected override void Configure()
{
CreateMap<TeamEmployee, TeamEmployeeForm>();
}
}
是的,这就是:)
这是平面视图模型对象。
您可以在Employee上创建一个名为“TeamNames”的只读字符串属性。 将列表构建逻辑放在那里。 这样,你就拥有了一个可测试的属性(与lambda表达式相比),它将使你的映射更容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.