我想要实现的是只更新数据库中实体的特定属性。(模仿 UPDATE Foo Set Status = 'kool' WHERE ID = 99 之类的东西)。
我试试这个:
public void SetFooStatus(Foo foo)
{
var fooToUpdate = new Foo()
{
Id = foo.Id,
Status =foo.Status
};
this.Context.Foos.Attach(fooToUpdate);
this.Context.Entry(fooToUpdate).Property("Status").IsModified = true;
this.Context.ValidateOnSaveEnabled = false;
this.dbSet.Attach(entityToUpdate); // This is IDbSet<Foo>
this.dbSet.Entry(entityToUpdate).State = EntityState.Modified;
this.dbSet.SaveChanges();
}
问题是当我将 State 设置为 EntityState.Modified 时,所有属性都标记为 Chagned -IsModified 返回 true-。
当我将其注释掉时,更新没有完成 - Db 中没有发生任何更改。
问题: 如何强制 EF 仅更新 foo 对象的 Status 属性而不触及 Db 中的其他字段?