如何将特定属性还原为其保存值(EF4)?

时间:2013-07-04 02:27:38

标签: asp.net-mvc-3 entity-framework

好吧,我正在使用MVC3和EF4,一切都很棒......除非我必须更新一个对象而不是它的所有属性。

到目前为止,它是如何实现的: 我有一个类,它的属性,以及我的DbContext上的DbSet。我的页面正在发送一个带有该对象的所有值的JSon(包括我想要更新的那些以及我想要保持不变的那些)。在控制器上,我正在接收该对象,只是将其状态更改为EntityState.Modified并调用DbContext的SaveChanges()。

正如我所说,一切都很有效,但我确实希望丢弃该JSon收到的一些值,使它们的值保持不变,就像它们在数据库中一样。

我怎样才能做到这一点?

提前感谢您的帮助......

2 个答案:

答案 0 :(得分:1)

不确定您的代码,但是当您只想更新EF的更新调用时,您应该这样做....

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

所以你会修改你想要的任何一个属性,而不管那些你不想要的属性。

答案 1 :(得分: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