gpt4 book ai didi

c# - Automapper - 它可以只映射源对象和目标对象中的现有属性吗?

转载 作者:可可西里 更新时间:2023-11-01 08:38:46 26 4
gpt4 key购买 nike

我有一个简单的更新函数:

public void Update(Users user)
{
tblUserData userData = _context.tblUserDatas.Where(u => u.IDUSER == user.IDUSER).FirstOrDefault();
if (userData != null)
{
Mapper.CreateMap<Users, tblUserData>();
userData = Mapper.Map<Users, tblUserData>(user);
_context.SaveChanges()
}
}

userData 是一个 EF 实体,它的 Entity Key 属性被取消了,因为我相信它存在于目标对象中,但不存在于源对象中,所以它被映射到它的默认值(对于 Entity Key , 那是空的)

所以,我的问题是可以将 Automapper 配置为仅尝试映射存在于源对象和目标对象中的属性吗?我希望跳过诸如实体键和导航属性之类的内容。

最佳答案

如果需要,您可以明确告诉 AutoMapper 忽略某些属性,如下所示:

Mapper.CreateMap<Users, tblUserData>()
.ForMember(dest => dest.Id, opt => opt.Ignore());

这意味着目标对象中的 Id 列将始终保持不变。

您可以使用 Condition 选项来指定是否根据逻辑条件的结果应用映射,如下所示:

Mapper.CreateMap<Users, tblUserData>()
.ForMember(dest => dest.Id, opt => opt.Condition(src=>src.Id.HasValue));

Mapper.CreateMap<Users, tblUserData>()
.ForMember(dest => dest.Id, opt => opt.Condition(src=>src.Id != null));

取决于您的具体要求。

关于c# - Automapper - 它可以只映射源对象和目标对象中的现有属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17147099/

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