我有一个实体,我已经知道它存在于数据库中,但当前上下文没有跟踪它。我使用DbSet上的Attach方法强制上下文跟踪该实体。然后为必要的属性设置'IsModified'= true。但是EF试图更新数据库表中的每个属性,并且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)
{
...
}
}
}
你有什么想法吗?