gpt4 book ai didi

c# - Automapper - 将多对多关联映射到平面对象的最佳实践

转载 作者:太空狗 更新时间:2023-10-29 23:34:54 27 4
gpt4 key购买 nike

我有两个实体:EmployeeTeam

alt text

我想要的是一个 EmployeeForm,其中包含 TeamName

alt text

如何使用 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 表达式选择集合的属性。

最佳答案

我重新考虑了我的整个设计,开始改变领域模型:

alt text

我使用关系表将多对多关联更改为两个一对多关联

有了这个更简单的域模型,我可以使用 AutoMapper 轻松地将其映射到一个平面 DTO

public class TeamEmployeeMapperProfile : Profile
{
protected override void Configure()
{
CreateMap<TeamEmployee, TeamEmployeeForm>();
}
}

是的,就是这样:)

这是平面 View 模型对象。

alt text

关于c# - Automapper - 将多对多关联映射到平面对象的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3694632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com