实体框架:将字段更新为空值?

时间:2011-01-31 07:57:08

标签: c# entity-framework

我正在使用存根来更新我的实体,并且当更新的实体由值从非空值更改为空值的列时,空值不会持久保存到数据库,即记录继续保持先前的非空值值。

我做错了什么?

public void UpdateEntity(Entity e)
        {
            _context.Works.Attach(new Entity{ Id = e.Id });
            _context.ApplyCurrentValues("Entities", e);
            _context.SaveChanges();
        }

2 个答案:

答案 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();