【发布时间】:2021-04-28 12:53:23
【问题描述】:
我在 C 类中有 6 个属性,我想将我的 3 个属性从 A 方法映射到输出类 A 和其他 3 个从 B 方法映射到输出类 B
首先,我将 A 映射到 C(在 MappingProfile 类中定义,其他 3 个属性被忽略),然后我将 B 映射到 C(与上一个类似)
我的问题是,在第二个 Map 中,我的 c 对象总是会被 b 对象覆盖,而其他 3 个属性(我从对象中获取的)返回为 null(因为它们在 B 类中不存在)。
最后,我想在我的 c 对象中包含来自 a 和 b 对象的所有数据。
映射操作-
Adaptee Amethod = new Adaptee();
List<A> a = Amethod.A().ToList();
List<B> b = Amethod.B().ToList();
List<C> c1 = _mapper.Map<List<A>, List<C>>(a);
List<C> c = _mapper.Map(b, c1);
映射配置文件 -
public MappingProfile()
{
CreateMap<A, C>()
.ForMember(z => z.FN, opt => opt.MapFrom(x => x.FN))
.ForMember(z => z.LN, opt => opt.MapFrom(x => x.LN))
.ForMember(z => z.uniqe, opt => opt.MapFrom(x => x.uniqe))
.ForMember(z => z.Addr, opt => opt.Ignore())
.ForMember(z => z.HomeTown, opt => opt.Ignore())
.ForMember(z => z.NID, opt => opt.Ignore());
CreateMap<B, C>()
.ForMember(z => z.Addr, opt => opt.MapFrom(x => x.Addr))
.ForMember(z => z.HomeTown, opt => opt.MapFrom(x => x.HomeTown))
.ForMember(z => z.NID, opt => opt.MapFrom(x => x.NID))
.ForMember(z => z.FN, opt => opt.Ignore())
.ForMember(z => z.LN, opt => opt.Ignore())
.ForMember(z => z.uniqe, opt => opt.Ignore());
}
我正在使用AutoMapper.Extensions.Microsoft.DependancyInjection v8.1.0。
【问题讨论】:
-
我在您的配置文件和映射代码中没有发现任何问题。你还有这个问题吗?
-
是的,我仍然有这个问题
标签: c# automapper asp.net-core-webapi