我在Telerik Open Access ORM中使用Automapper。
现在我的问题是我的表tblUser
中有5列,如Firstname
,Lastname
,Username
,Email
和Password
。
现在,当admin创建新用户时,它会通过某些逻辑生成密码。
问题在于更新。目前,我在用户详细信息页面上显示密码字段,其中包含只读文本框。现在我不想显示密码字段。那么在更新时我是否会跳过密码字段?
我尝试了以下但是它将密码字段的错误抛出为空。
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插入列&#39;密码&#39;,表中 &#39; MyDatabase.dbo.tblUsers&#39 ;;列不允许空值。 UPDATE 失败。\ r \ n声明已经终止。
我不知道如何通过跳过某些字段来更新。
假设我在插入表单中有10列,在特定表中有更新形式的5列,所以在更新时我将其他5列作为隐藏字段以避免错误。但是现在我不想隐藏其他5个字段。不存在任何替代方案吗?
答案 0 :(得分:1)
您需要映射到现有实体:
var entity = dbContext.TblUsers.Find<TblUser>(dto.Id);
Mapper.Map<UserDTO, TblUser>(dto, entity);
dbContext.SaveChanges();