自动映射程序:只更新表的少数列

本文关键字:数列 更新 映射程序 | 更新日期: 2023-09-27 18:21:22

我正在使用带有Telerik Open Access ORM的Automapper。现在我的问题是,我的表tblUser中有5列,如FirstnameLastnameUsernameEmailPassword。现在,当管理员创建新用户时,它是由一些逻辑生成的密码。

问题正在更新中。目前,我在用户详细信息页面上用只读文本框显示密码字段。现在我不想显示密码字段。所以,在更新时,是否有跳过密码字段的情况?

我试着遵循,但它抛出了一个错误,密码字段为null。

var map = AutoMapper.Mapper.CreateMap<UserDTO, TblUser>().ForSourceMember(x=>x.Password,y=>y.Ignore());
this.Update(entity);
this.Save();
return entity;
public void Update(T entity)
{
  dbContext.AttachCopy<U>(AutoMapper.Mapper.Map<U>(entity));
}

错误:

无法将值NULL插入表的"密码"列中'MyDatabase.dbo.tblUsers';列不允许为null。更新失败。''''r''n语句已终止。

我不知道如何跳过某些字段进行更新。

对于特定的表,假设我在插入形式中有10列,在更新形式中有5列,所以在更新时,我将其他5列作为隐藏字段以避免错误。但现在我不想把其他5个字段隐藏起来。难道没有其他选择吗?

自动映射程序:只更新表的少数列

您需要映射到现有实体:

var entity = dbContext.TblUsers.Find<TblUser>(dto.Id);
Mapper.Map<UserDTO, TblUser>(dto, entity);
dbContext.SaveChanges();