EF中更新部分字段如何处理?

假如说有个实体UserInfo ,其中的UserId是主键,定义个实体如下

UserInfo userInfonew = new UserInfo()

{
UserId=userInfo.UserId,
Email = userInfo.Email,
FirstName = userInfo.FirstName,
LastName = userInfo.LastName,
LastUpdateBy = GetCurrentUserGuid(),
LastUpdate = DateTime.Now
};

如果全部字段需要更新可以使用如下方法:

db.Entry(userInfonew).State = EntityState.Modified;

db.SaveChanges();

假如我们想更新部分字段,如只想更新Email的信可以采用以下方法:

db.UserInfoes.Attach(userInfonew);
db.Entry(userInfonew).Property(x => x.Email).IsModified = true;

db.SaveChanges();

  但是有个问题如果我们这个实体字段很多,比如说有20个字段,想更新其中18个字段,那不可能这18个字段都要定义一遍db.Entry(userInfonew).Property(x => x.field).IsModified = true;有没有其他办法处理这种情况?
阅读 11.9k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进