2013-07-04 46 views
0

那么,我使用MVC3和EF4,一切都很好......除了当我必须更新一个对象,但不是所有的属性。如何将特定属性恢复为其保存的值(EF4)?

下面是其迄今为止实施: 我有一个类,它的属性和它在我的DbContext一个DbSet。我的页面正在发送一个JSon,其中包含那个对象的所有值(包括我想要更新的那些和我想保持不变的那些)。在控制器上,我收到对象,只是将状态更改为EntityState.Modified并调用DbContext的SaveChanges()。

正如我所说的,一切都很好,但我确实希望这个JSon接收到的一些值被丢弃,并保持它们的值不变,因为它们在数据库上。

我该如何做到这一点?

在此先感谢您的帮助......

回答

1

不知道你的代码,但是当你只是想更新的更新调用某些属性来到EF你应该这样做,像这样....

db.Person.Attach(person); 
db.Entry(person).Property(x => x.Name).IsModified = true; 
db.SaveChanges(); 

所以你会修改你想要的任何属性,然后单独留下哪些你不知道的属性。

0

你也可以尝试这..

using (DBContext newCtx = new DBContext()) 
{ 
    newCtx.Employee.Attach(emp); 
    newCtx.ObjectStateManager.ChangeObjectState(emp, System.Data.EntityState.Modified); 
    newCtx.SaveChanges(); 
} 

参考:Update Entity in Entity Framework

+0

但是,在这种情况下,你没有选择的属性离开不变,并更新哪些...都能跟得上。那根本不会这样做...... –