我使用 ADO.net实体数据模型来处理数据库。
在我的程序中,我想更新用户表的记录,所以我使用下面的代码来执行此操作。
在此功能中,我发送更改的用户信息,然后用当前用户信息覆盖信息。
运行objUser = _user;
后,然后致电objContext.SaveChanges();
保存更改。
但是当我这样做时,更改不会持久保存到数据库中。我将此代码用于其他程序,但在这种情况下代码不起作用!
public void Update(tbLiUser _user)
{
LinkContext objContext = this.Context;
tbLiUser objUser = objContext.tbLiUsers.First(u => u.tluId == _user.tluId);
objContext.Attach(objUser);
objUser = _user;
objContext.SaveChanges();
}
答案 0 :(得分:2)
首先,如果您已经从objUser
检索objContext
,那么在检索它之后,将该用户附加到上下文中确实没有意义。所以我完全放弃这一行:
objContext.Attach(objUser);
此外 - 您可能只需要根据objUser
中的值更新每个属性的_user
,而不是仅仅分配整个对象。
为了帮助您避免繁琐的繁琐代码,您可以使用AutoMapper之类的东西来分配从一种对象类型到另一种对象类型的属性。或者您可以创建一个智能例程来比较两个objUser
和_user
,并仅更新objUser
上与_user
中的值不同的那些属性 - 应该要创建这种方法太难了:
objUser.UpdateValuesFromOtherUser(_user);
objContext.SaveChanges();