好吧,我正在使用MVC3和EF4,一切都很棒......除非我必须更新一个对象而不是它的所有属性。
到目前为止,它是如何实现的: 我有一个类,它的属性,以及我的DbContext上的DbSet。我的页面正在发送一个带有该对象的所有值的JSon(包括我想要更新的那些以及我想要保持不变的那些)。在控制器上,我正在接收该对象,只是将其状态更改为EntityState.Modified并调用DbContext的SaveChanges()。
正如我所说,一切都很有效,但我确实希望丢弃该JSon收到的一些值,使它们的值保持不变,就像它们在数据库中一样。
我怎样才能做到这一点?
提前感谢您的帮助......
答案 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();
}