使用Entity Framework仅更新DB中的某些列

时间:2014-08-27 10:03:54

标签: c# asp.net-mvc entity-framework code-first

我有一个我知道已经存在于数据库中但实际上当前没有被上下文跟踪的实体。我强制上下文使用DbSet上的Attach方法跟踪实体。然后设置'IsModified' = true以获取必要的属性。但是EF尝试更新db表中的每个属性,并且SaveChanges()方法抛出异常,即某些属性是必需的并且不能为空。虽然我只将一个属性标记为已修改。 我使用EF v.6.0。

这是我的代码:

public bool ChangeState(int id, bool state)
    {
        try
        {
            var obj = new T {ID = id, Hidden = state};

            _context.Set<T>().Attach(obj);

            _context.Entry(obj).Property(x => x.Hidden).IsModified = true;
            return _context.SaveChanges() == 1;
        }
        catch (DbEntityValidationException dbEx)
        {
            ...
        }            
    }
}

你有什么想法吗?

1 个答案:

答案 0 :(得分:2)

好的,要回答这个问题,我会在这里回答@Stephen Muecke的回答:


你可以尝试_context.Configuration.ValidateOnSaveEnabled = false; 请不要投票给我,信用是@Stephen Muecke