2
我使用ADO.net實體數據模型用於數據庫工作。更新在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();
}
objUser和_user是對象的句柄。當你找到objUser時,你會發現一個對象,把它的句柄賦給objUser,並將它添加到你的上下文中。當你說objUser = _user時,你不更新對象,你只是將變量指向一個不同的對象。上下文仍然指向舊對象。正如marc_s所說,你需要一個接一個地複製屬性,或者有一些快捷方式可以「批量」複製它們,但重點是你必須更新現有的對象,而不是重新分配它。 – Jay 2013-03-15 21:38:12