我正在使用存根来更新我的实体,并且当更新的实体由值从非空值更改为空值的列时,空值不会持久保存到数据库,即记录继续保持先前的非空值值。
我做错了什么?
public void UpdateEntity(Entity e)
{
_context.Works.Attach(new Entity{ Id = e.Id });
_context.ApplyCurrentValues("Entities", e);
_context.SaveChanges();
}
答案 0 :(得分:2)
问题是您需要在 null
之后将Attach()
分配给这些属性,而不是之前。也许ApplyCurrentValues()
只复制非已经完全相同的属性? (我从未测试过,但如果确实如此,那将是合理的。)
答案 1 :(得分:0)
尽量避免使用Attach加载实体。如果您只是从数据库中获取实体,则无需为无效项目上的设置标志而烦恼:
var stage = Db.Stages.First(s => s.ID == someId);
stage.Notation = vm.Notation; // can be also null
Db.SaveChanges();